首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于linux代码中的一个构造体确认

2013-08-20 
关于linux代码中的一个结构体确认static inline struct nlattr *nla_next(const struct nlattr *nla, int

关于linux代码中的一个结构体确认
static inline struct nlattr *nla_next(const struct nlattr *nla, int *remaining)
{
int totlen = NLA_ALIGN(nla->nla_len);

*remaining -= totlen;
return (struct nlattr *) ((char *) nla + totlen);
}

#define NLA_ALIGN(len)(((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))

其中nlattr结构如下:
struct nlattr
{
__u16           nla_len;
__u16           nla_type;
};
疑问:
一 不太明白nlattr的意义是什么,nla_len指的是整个nlattr的长度吗?
二 这个宏定义NLA_ALIGN(len)代表什么意思,从代码中看应该是指一个nlattr的长度,但是这个定义没看懂什么意思

请各位帮忙看看这个疑问,多谢!
[解决办法]


struct nlattr
{
__u16           nla_len;
__u16           nla_type;
};
1 就是一个结构体而已!一个长度,一个是type

#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
2 一个宏函数而已!len为参数,

[解决办法]
nla_len有效数据长度。
NLA_ALIGN(nla->nla_len),按字节对齐后,结构体实际占用内存大小

热点排行