linux操作系统核心常用的数据结构.pdf
《linux操作系统核心常用的数据结构.pdf》由会员分享,可在线阅读,更多相关《linux操作系统核心常用的数据结构.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、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 i
2、f 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(ag
3、ing)*/#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 bu
4、ffer 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 l
5、ong 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.*/st
6、ruct 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
7、.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;/*
8、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
9、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 struct
10、ure.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;/*interfac
11、e 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 broadcastMAX_ADDR
12、_LEN;unsigned char pad;unsigned char dev_addrMAX_ADDR_LEN;unsigned char addr_len;/*hardware addr len*/unsigned long pa_addr;/*protocol address*/unsigned long pa_brdaddr;/*protocol broadcast addr*/unsigned long pa_dstaddr;/*protocol P-P other addr*/unsigned long pa_mask;/*protocol netmask*/unsigned s
13、hort pa_alen;/*protocol address len*/struct dev_mc_list*mc_list;/*Mcast mac addrs*/int mc_count;/*No installed mcasts*/struct ip_mc_list*ip_mc_list;/*IP mcast filter chain*/_u32 tx_queue_len;/*Max frames per queue*/*For load balancing driver pair support*/unsigned long pkt_queue;/*Packets queued*/st
14、ruct device*slave;/*Slave device*/struct net_alias_info*alias_info;/*main dev alias info*/struct net_alias*my_alias;/*alias devs*/*Pointer to the interface buffers.*/struct sk_buff_head buffsDEV_NUMBUFFS;/*Pointers to interface service routines.*/int(*open)(struct device*dev);int(*stop)(struct devic
15、e*dev);int(*hard_start_xmit)(struct sk_buff*skb,struct device*dev);int(*hard_header)(struct sk_buff*skb,struct device*dev,unsigned short type,void*daddr,void*saddr,unsigned len);int(*rebuild_header)(void*eth,struct device*dev,unsigned long raddr,struct sk_buff*skb);void(*set_multicast_list)(struct d
16、evice*dev);int(*set_mac_address)(struct device*dev,void*addr);int(*do_ioctl)(struct device*dev,struct ifreq*ifr,int cmd);int(*set_config)(struct device*dev,struct ifmap*map);void(*header_cache_bind)(struct hh_cache*hhp,struct device*dev,unsigned short htype,_u32 daddr);void(*header_cache_update)(str
17、uct hh_cache*hh,struct device*dev,unsigned char*haddr);int(*change_mtu)(struct device*dev,int new_mtu);struct iw_statistics*(*get_wireless_stats)(struct device*dev);device_struct 此结构被块设备和字符设备用来向核心登记(包含设备名称以及可对此设备进行的 文件操作)。chrdevs 和 blkdevs 中的每个有效分别表示一个字符设备和块设备。struct device_struct const char*name;st
18、ruct file_operations*fops;file 每个打开的文件、套接口都用此结构表示。struct file mode_t f_mode;loff_t f_pos;unsigned short f_flags;unsigned short f_count;unsigned long f_reada,f_ramax,f_raend,f_ralen,f_rawin;struct file*f_next,*f_prev;int f_owner;/*pid or-pgrp where SIGIO should be sent*/struct inode*f_inode;struct fi
19、le_operations*f_op;unsigned long f_version;void*private_data;/*needed for tty driver,and maybe others*/;files_struct 描叙被某进程打开的所有文件。struct files_struct int count;fd_set close_on_exec;fd_set open_fds;struct file*fdNR_OPEN;fs_struct struct fs_struct int count;unsigned short umask;struct inode*root,*pwd
20、;gendisk 包含关于某个硬盘的信息。用于磁盘初始化与分区检查时。struct hd_struct long start_sect;long nr_sects;struct gendisk int major;/*major number of driver*/const char*major_name;/*name of major driver*/int minor_shift;/*number of times minor is shifted to get real minor*/int max_p;/*maximum partitions per device*/int max_
21、nr;/*maximum number of real devices*/void(*init)(struct gendisk*);/*Initialization called before we do our thing*/struct hd_struct*part;/*partition table*/int*sizes;/*device size in blocks,copied to blk_size*/int nr_real;/*number of real devices*/void*real_devices;/*internal use*/struct gendisk*next
22、;inode 此 VFS inode 结构描叙磁盘上一个文件或目录的信息。struct inode kdev_t i_dev;unsigned long i_ino;umode_t i_mode;nlink_t i_nlink;uid_t i_uid;gid_t i_gid;kdev_t i_rdev;off_t i_size;time_t i_atime;time_t i_mtime;time_t i_ctime;unsigned long i_blksize;unsigned long i_blocks;unsigned long i_version;unsigned long i_nrp
23、ages;struct semaphore i_sem;struct inode_operations*i_op;struct super_block*i_sb;struct wait_queue*i_wait;struct file_lock*i_flock;struct vm_area_struct*i_mmap;struct page*i_pages;struct dquot*i_dquotMAXQUOTAS;struct inode*i_next,*i_prev;struct inode*i_hash_next,*i_hash_prev;struct inode*i_bound_to,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 操作系统 核心 常用 数据结构
限制150内