1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Вопрос по си

Тема в разделе "С и С++", создана пользователем Guest, 22 апр 2006.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Репутация:
    0
    Что значит эта строчка: nic->ioaddr = pci->ioaddr & ~3; ??? (в частности & ~3)
    (nic и pci это определенные структуры)
     
  2. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    & - это побитовое AND. ~ - это дополнение.
    Нипример 3 = 0000 0011 в двоичной системе.
    ~3 = 1111 1100
    А твое выражение означает что nic->ioaddr присваивается значение pci->ioaddr с обнуленными последними 2 битами.
     
  3. maks

    maks Гость

    Репутация:
    0
    еще по синтаксису: что значит вот это:

    #define CONFIG_CMD(bus, device_fn, where) (0x80000000 | (bus << 16) | (device_fn << 8) | (where & ~3))
     
  4. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Упаковка 3 байт в DWORD - например, bus сдвигается влево на 16 бит и накладывается на маску.
     
  5. maks

    maks Гость

    Репутация:
    0
    т.е. bus сдвигается влево на 16 бит, накладывается на маску и записывается в bus и так для остальных двух параметров?
     
  6. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Нет, результат макро - число, у которого в в третьем байте - bus, во втором - device, в третьем - where.
     
  7. Гость

    Репутация:
    0
    1.static unsigned char tx_buffer[TX_BUF_SIZE] __attribute__((aligned(4)));
    это определение функции или что? (TX_BUF_SIZE=1514)
    2.struct nic
    {
    void (*reset)P((struct nic *));
    }
    что в структуре так определяется?
     
  8. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Текстовый буфер с зафиксированным выравниванием в памяти(зачем оно здесь - хз).

    Вроде указатель на функцию, только Р() - тоже макро должно быть.
     
  9. Гость

    Репутация:
    0
    После struct nic
    {
    void (*reset)P((struct nic *));
    }

    есть такое: nic->reset = rtl_reset;
    а потом, определение функции: static void rtl_reset(struct nic* nic) {...}

    а что такое P() нигде не описано и не понятно...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей