当前位置: 技术问答>linux和unix
内核中数据结构问题,大家指点,初学者。
来源: 互联网 发布时间:2016-03-16
本文导语: enum------------------是内核独有的数据类型吗? /* * State structure for one instance */ typedef struct { struct module *owner; /* Codec module ID */ audio_stream_t *output_stream; audio_stream_t *input_stream; int rd_ref:1; /* open ref...
enum------------------是内核独有的数据类型吗?
/*
* State structure for one instance
*/
typedef struct {
struct module *owner; /* Codec module ID */
audio_stream_t *output_stream;
audio_stream_t *input_stream;
int rd_ref:1; /* open reference for recording */------------------这个冒号是怎么回事?
int wr_ref:1; /* open reference for playback */
int need_tx_for_rx:1; /* if data must be sent while receiving */
void *data;
void (*hw_init) (void *);
void (*hw_shutdown) (void *);
int (*client_ioctl) (struct inode *, struct file *, uint, ulong);
int (*hw_probe) (void);
void (*hw_remove) (void);
void (*hw_cleanup) (void);
int (*hw_suspend) (void);
int (*hw_resume) (void);
struct pm_dev *pm_dev;
struct semaphore sem; /* to protect against races in attach() */
} audio_state_t;
/*
* State structure for one instance
*/
typedef struct {
struct module *owner; /* Codec module ID */
audio_stream_t *output_stream;
audio_stream_t *input_stream;
int rd_ref:1; /* open reference for recording */------------------这个冒号是怎么回事?
int wr_ref:1; /* open reference for playback */
int need_tx_for_rx:1; /* if data must be sent while receiving */
void *data;
void (*hw_init) (void *);
void (*hw_shutdown) (void *);
int (*client_ioctl) (struct inode *, struct file *, uint, ulong);
int (*hw_probe) (void);
void (*hw_remove) (void);
void (*hw_cleanup) (void);
int (*hw_suspend) (void);
int (*hw_resume) (void);
struct pm_dev *pm_dev;
struct semaphore sem; /* to protect against races in attach() */
} audio_state_t;
|
enum 是C语言的基本类型。
int rd_ref:1; /* open reference for recording */------------------这个冒号是怎么回事?
-------------------
表示位段,表示re_ref占1个bit
int rd_ref:1; /* open reference for recording */------------------这个冒号是怎么回事?
-------------------
表示位段,表示re_ref占1个bit
|
位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。
|
1)enum, 找找C语言手册
2)即使用位域,也是要考虑struct字节对齐的问题。
可以google搜索一下,很多这方面的帖子,
这里有一个 http://topic.csdn.net/t/20051208/11/4445658.html
2)即使用位域,也是要考虑struct字节对齐的问题。
可以google搜索一下,很多这方面的帖子,
这里有一个 http://topic.csdn.net/t/20051208/11/4445658.html