⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000016.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;coolzhang&nbsp;(coolzhang),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;linux&nbsp;bible&nbsp;第十五章&nbsp;Linux核心数据结构&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Oct&nbsp;25&nbsp;18:02:12&nbsp;1999)&nbsp;<BR>&nbsp;<BR>发信人:&nbsp;coolzhang&nbsp;(coolzhang),&nbsp;信区:&nbsp;UNIX&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;linux&nbsp;bible&nbsp;第十五章&nbsp;Linux核心数据结构&nbsp;<BR>发信站:&nbsp;武汉白云黄鹤站&nbsp;(Mon&nbsp;Oct&nbsp;25&nbsp;17:33:51&nbsp;1999),&nbsp;站内信件&nbsp;<BR>第十五章&nbsp;Linux核心数据结构&nbsp;<BR>本章列出了Linux实用的主要数据结构。&nbsp;<BR>block_dev_struct&nbsp;<BR>此结构用于向核心登记块设备,它还被buffer&nbsp;<BR>cache实用。所有此类结构都位于blk_dev数组中。&nbsp;<BR>struct&nbsp;blk_dev_struct&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;(*request_fn)(void);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;request&nbsp;*&nbsp;current_request;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;request&nbsp;&nbsp;&nbsp;plug;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;tq_struct&nbsp;plug_tq;&nbsp;<BR>};&nbsp;<BR>buffer_head&nbsp;<BR>此结构包含关于buffer&nbsp;cache中一块缓存的信息。&nbsp;<BR>/*&nbsp;bh&nbsp;state&nbsp;bits&nbsp;*/&nbsp;<BR>#define&nbsp;BH_Uptodate&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;/*&nbsp;1&nbsp;if&nbsp;the&nbsp;buffer&nbsp;contains&nbsp;valid&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>#define&nbsp;BH_Dirty&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;/*&nbsp;1&nbsp;if&nbsp;the&nbsp;buffer&nbsp;is&nbsp;dirty&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>#define&nbsp;BH_Lock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;/*&nbsp;1&nbsp;if&nbsp;the&nbsp;buffer&nbsp;is&nbsp;locked&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>#define&nbsp;BH_Req&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;/*&nbsp;0&nbsp;if&nbsp;the&nbsp;buffer&nbsp;has&nbsp;been&nbsp;invalidated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>#define&nbsp;BH_Touched&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;/*&nbsp;1&nbsp;if&nbsp;the&nbsp;buffer&nbsp;has&nbsp;been&nbsp;touched&nbsp;(aging)&nbsp;*/&nbsp;<BR>#define&nbsp;BH_Has_aged&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;/*&nbsp;1&nbsp;if&nbsp;the&nbsp;buffer&nbsp;has&nbsp;been&nbsp;aged&nbsp;(aging)&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>#define&nbsp;BH_Protected&nbsp;6&nbsp;&nbsp;&nbsp;/*&nbsp;1&nbsp;if&nbsp;the&nbsp;buffer&nbsp;is&nbsp;protected&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>#define&nbsp;BH_FreeOnIO&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;/*&nbsp;1&nbsp;to&nbsp;discard&nbsp;the&nbsp;buffer_head&nbsp;after&nbsp;IO&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>struct&nbsp;buffer_head&nbsp;{&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;First&nbsp;cache&nbsp;line:&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_blocknr;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;block&nbsp;number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;kdev_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_dev;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;device&nbsp;(B_FREE&nbsp;=&nbsp;free)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;kdev_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_rdev;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Real&nbsp;device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_rsector;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Real&nbsp;buffer&nbsp;location&nbsp;on&nbsp;disk&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;buffer_head&nbsp;*b_next;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Hash&nbsp;queue&nbsp;list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;buffer_head&nbsp;*b_this_page;&nbsp;/*&nbsp;circular&nbsp;list&nbsp;of&nbsp;buffers&nbsp;in&nbsp;one&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;Second&nbsp;cache&nbsp;line:&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_state;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;buffer&nbsp;state&nbsp;bitmap&nbsp;(above)&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;buffer_head&nbsp;*b_next_free;&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_count;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;users&nbsp;using&nbsp;this&nbsp;block&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_size;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;block&nbsp;size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;Non-performance-critical&nbsp;data&nbsp;follows.&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*b_data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;pointer&nbsp;to&nbsp;data&nbsp;block&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_list;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;List&nbsp;that&nbsp;this&nbsp;buffer&nbsp;appears&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_flushtime;&nbsp;&nbsp;/*&nbsp;Time&nbsp;when&nbsp;this&nbsp;(dirty)&nbsp;buffer&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;should&nbsp;be&nbsp;written&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_lru_time;&nbsp;&nbsp;&nbsp;/*&nbsp;Time&nbsp;when&nbsp;this&nbsp;buffer&nbsp;was&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;last&nbsp;used.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;wait_queue&nbsp;&nbsp;*b_wait;&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;buffer_head&nbsp;*b_prev;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;doubly&nbsp;linked&nbsp;hash&nbsp;list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;buffer_head&nbsp;*b_prev_free;&nbsp;/*&nbsp;doubly&nbsp;linked&nbsp;list&nbsp;of&nbsp;buffers&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;buffer_head&nbsp;*b_reqnext;&nbsp;&nbsp;&nbsp;/*&nbsp;request&nbsp;queue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>};&nbsp;<BR>device&nbsp;<BR>系统中每个网络设备都用一个设备数据结构来表示。&nbsp;<BR>struct&nbsp;device&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;is&nbsp;the&nbsp;first&nbsp;field&nbsp;of&nbsp;the&nbsp;&quot;visible&quot;&nbsp;part&nbsp;of&nbsp;this&nbsp;structure&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;(i.e.&nbsp;as&nbsp;seen&nbsp;by&nbsp;users&nbsp;in&nbsp;the&nbsp;&quot;Space.c&quot;&nbsp;file).&nbsp;&nbsp;It&nbsp;is&nbsp;the&nbsp;name&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;interface.&nbsp;<BR>&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name;&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;I/O&nbsp;specific&nbsp;fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rmem_end;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;shmem&nbsp;&quot;recv&quot;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rmem_start;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;shmem&nbsp;&quot;recv&quot;&nbsp;start&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem_end;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;shared&nbsp;mem&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem_start;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;shared&nbsp;mem&nbsp;start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base_addr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;device&nbsp;I/O&nbsp;address&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;irq;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;device&nbsp;IRQ&nbsp;number&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;Low-level&nbsp;status&nbsp;flags.&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;volatile&nbsp;unsigned&nbsp;char&nbsp;&nbsp;start,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;start&nbsp;an&nbsp;operation&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interrupt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;interrupt&nbsp;arrived&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbusy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;transmitter&nbsp;busy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*next;&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;The&nbsp;device&nbsp;initialization&nbsp;function.&nbsp;Called&nbsp;only&nbsp;once.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*init)(struct&nbsp;device&nbsp;*dev);&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;Some&nbsp;hardware&nbsp;also&nbsp;needs&nbsp;these&nbsp;fields,&nbsp;but&nbsp;they&nbsp;are&nbsp;not&nbsp;part&nbsp;of&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;usual&nbsp;set&nbsp;specified&nbsp;in&nbsp;Space.c.&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if_port;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Selectable&nbsp;AUI,TP,&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dma;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;DMA&nbsp;channel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;struct&nbsp;enet_statistics*&nbsp;(*get_stats)(struct&nbsp;device&nbsp;*dev);&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;marks&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;&quot;visible&quot;&nbsp;part&nbsp;of&nbsp;the&nbsp;structure.&nbsp;All&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;fields&nbsp;hereafter&nbsp;are&nbsp;internal&nbsp;to&nbsp;the&nbsp;system,&nbsp;and&nbsp;may&nbsp;change&nbsp;at&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;will&nbsp;(read:&nbsp;may&nbsp;be&nbsp;cleaned&nbsp;up&nbsp;at&nbsp;will).&nbsp;<BR>&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;/*&nbsp;These&nbsp;may&nbsp;be&nbsp;needed&nbsp;for&nbsp;future&nbsp;network-power-down&nbsp;code.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans_start;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Time&nbsp;(jiffies)&nbsp;of&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last&nbsp;transmit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last_rx;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Time&nbsp;of&nbsp;last&nbsp;Rx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;interface&nbsp;flags&nbsp;(BSD)*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;family;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;address&nbsp;family&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metric;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;routing&nbsp;metric&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -