SayoriOS 0.3.3

rtl8139.h
1 #pragma once
2
3 #include <common.h>
4
5 #define RTL8139_VENDOR 0x10EC
6 #define RTL8139_DEVICE 0x8139
7
8 #define RTL8139_BUFFER_PAGE_COUNT 4
9
10 enum RTL8139_regs {
11 MAC0_5 = 0x00, // 6 bytes long
12 MAR0_7 = 0x08, // 8 bytes long
13 RBSTART = 0x30, // 4 bytes long
14 CMD = 0x37, // 1 byte long
15 IMR = 0x3C, // 2 bytes long
16 ISR = 0x3D, // 2 bytes long
17 CONFIG_1 = 0x52
18 };
19
20 #define ROK 1
21 #define TOK (1 << 2)
22 #define CAPR 0x38
23 #define RX_READ_POINTER_MASK (~3)
24
25 // Ethernet II header (w/o VLAN 802.11Q tag)
26 typedef struct {
27 uint16_t Header;
28 uint16_t Size;
29 char MAC_DEVICE[6];
30 char MAC_SOURCE[6];
31 uint16_t Type;
32 } __attribute__((packed)) EthernetPacked;
33
34 void rtl8139_init();
35 void rtl8139_wake_up();
36 void rtl8139_sw_reset();
37 void rtl8139_init_buffer();
38 void rtl8139_init_interrupts();
39 void rtl8139_read_mac();
40 void rtl8139_setup_rcr();
41 void rtl8139_enable_rx_tx();
42 void rtl8139_send_packet(void* data, size_t length);
43 void rtl8139_end_interrupt();
common.h
Основные определения ядра
__attribute__
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
__attribute__::Header
uint16_t Header
Заголовок (?)
Definition: rtl8139.h:27
__attribute__::Size
uint16_t Size
Размер пакета
Definition: rtl8139.h:28
__attribute__::Type
uint16_t Type
Тип источника
Definition: rtl8139.h:31