Какое значение будет установлено для команды элемента структуры?

struct Descriptor *Rx_Descriptors = (struct Descriptor *)0x100000;
void setup_rx_descriptors()
 {
 unsigned int OWN = 0x80000000, EOR = 0x40000000; 
 int i;
 for(i = 0; i < num_of_rx_descriptors; i++) 
 {
 if(i == (num_of_rx_descriptors - 1)) 
 Rx_Descriptors[i].command = (OWN | EOR | (rx_buffer_len & 0x3FFF));
 else
 Rx_Descriptors[i].command = (OWN | (rx_buffer_len & 0x3FFF));

 Rx_Descriptors[i].low_buf = (unsigned int)&packet_buffer_address;
 }
 }

Что происходит с командой из структуры Rx_Descriptors???

1 ответ

Для каждого дескриптора в массиве Rx_Descriptors команда будет установлена на младшие 14 бит rx_buffer_len (предположительно потому, что 0x3fff (16383) является максимально допустимым и/или другие биты используются для чего-то еще).

Для каждого из них будет установлено значение OWN флага, а EOR будет установлено только для последнего.

licensed under cc by-sa 3.0 with attribution.