分享
 
 
 

Linux核心--16.Linux数据结构

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

原著: David A Rusling

翻译: Banyan & fifa

第十五章

Linux核心数据结构

本章列出了Linux实用的主要数据结构。

block_dev_struct

此结构用于向核心登记块设备,它还被buffer

cache实用。所有此类结构都位于blk_dev数组中。

struct

blk_dev_struct

{

void

(*request_fn)(void);

struct

request

*

current_request;

struct

request

plug;

struct

tq_struct

plug_tq;

};

buffer_head

此结构包含关于buffer

cache中一块缓存的信息。

/*

bh

state

bits

*/

#define

BH_Uptodate

0

/*

1

if

the

buffer

contains

valid

data

*/

#define

BH_Dirty

1

/*

1

if

the

buffer

is

dirty

*/

#define

BH_Lock

2

/*

1

if

the

buffer

is

locked

*/

#define

BH_Req

3

/*

0

if

the

buffer

has

been

invalidated

*/

#define

BH_Touched

4

/*

1

if

the

buffer

has

been

touched

(aging)

*/

#define

BH_Has_aged

5

/*

1

if

the

buffer

has

been

aged

(aging)

*/

#define

BH_Protected

6

/*

1

if

the

buffer

is

protected

*/

#define

BH_FreeOnIO

7

/*

1

to

discard

the

buffer_head

after

IO

*/

struct

buffer_head

{

/*

First

cache

line:

*/

unsigned

long

b_blocknr;

/*

block

number

*/

kdev_t

b_dev;

/*

device

(B_FREE

=

free)

*/

kdev_t

b_rdev;

/*

Real

device

*/

unsigned

long

b_rsector;

/*

Real

buffer

location

on

disk

*/

struct

buffer_head

*b_next;

/*

Hash

queue

list

*/

struct

buffer_head

*b_this_page;

/*

circular

list

of

buffers

in

one

page

*/

/*

Second

cache

line:

*/

unsigned

long

b_state;

/*

buffer

state

bitmap

(above)

*/

struct

buffer_head

*b_next_free;

unsigned

int

b_count;

/*

users

using

this

block

*/

unsigned

long

b_size;

/*

block

size

*/

/*

Non-performance-critical

data

follows.

*/

char

*b_data;

/*

pointer

to

data

block

*/

unsigned

int

b_list;

/*

List

that

this

buffer

appears

*/

unsigned

long

b_flushtime;

/*

Time

when

this

(dirty)

buffer

*

should

be

written

*/

unsigned

long

b_lru_time;

/*

Time

when

this

buffer

was

*

last

used.

*/

struct

wait_queue

*b_wait;

struct

buffer_head

*b_prev;

/*

doubly

linked

hash

list

*/

struct

buffer_head

*b_prev_free;

/*

doubly

linked

list

of

buffers

*/

struct

buffer_head

*b_reqnext;

/*

request

queue

*/

};

device

系统中每个网络设备都用一个设备数据结构来表示。

struct

device

{

/*

*

This

is

the

first

field

of

the

"visible"

part

of

this

structure

*

(i.e.

as

seen

by

users

in

the

"Space.c"

file).

It

is

the

name

*

the

interface.

*/

char

*name;

/*

I/O

specific

fields

*/

unsigned

long

rmem_end;

/*

shmem

"recv"

end

*/

unsigned

long

rmem_start;

/*

shmem

"recv"

start

*/

unsigned

long

mem_end;

/*

shared

mem

end

*/

unsigned

long

mem_start;

/*

shared

mem

start

*/

unsigned

long

base_addr;

/*

device

I/O

address

*/

unsigned

char

irq;

/*

device

IRQ

number

*/

/*

Low-level

status

flags.

*/

volatile

unsigned

char

start,

/*

start

an

operation

*/

interrupt;

/*

interrupt

arrived

*/

unsigned

long

tbusy;

/*

transmitter

busy

*/

struct

device

*next;

/*

The

device

initialization

function.

Called

only

once.

*/

int

(*init)(struct

device

*dev);

/*

Some

hardware

also

needs

these

fields,

but

they

are

not

part

of

the

usual

set

specified

in

Space.c.

*/

unsigned

char

if_port;

/*

Selectable

AUI,TP,

*/

unsigned

char

dma;

/*

DMA

channel

*/

struct

enet_statistics*

(*get_stats)(struct

device

*dev);

/*

*

This

marks

the

end

of

the

"visible"

part

of

the

structure.

All

*

fields

hereafter

are

internal

to

the

system,

and

may

change

at

*

will

(read:

may

be

cleaned

up

at

will).

*/

/*

These

may

be

needed

for

future

network-power-down

code.

*/

unsigned

long

trans_start;

/*

Time

(jiffies)

of

last

transmit

*/

unsigned

long

last_rx;

/*

Time

of

last

Rx

*/

unsigned

short

flags;

/*

interface

flags

(BSD)*/

unsigned

short

family;

/*

address

family

ID

*/

unsigned

short

metric;

/*

routing

metric

*/

unsigned

short

mtu;

/*

MTU

value

*/

unsigned

short

type;

/*

hardware

type

*/

unsigned

short

hard_header_len;

/*

hardware

hdr

len

*/

void

*priv;

/*

private

data

*/

/*

Interface

address

info.

*/

unsigned

char

broadcast[MAX_ADDR_LEN];

unsigned

char

pad;

unsigned

char

dev_addr[MAX_ADDR_LEN];

unsigned

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有