有关内核的一条小指令--很有学习的意义
时间:2008-12-24
来源:互联网
struct whed_usb_priv
{
struct usb_device * usb_dev;
struct net_device * net_dev;
whed_urb_tx_queue *tx_qu;
struct tasklet_struct rx_bh;
spinlock_t q_lock;
struct semaphore dpriv_sem;
struct completion get_mac_completion;
// u32 usb_membase;
// u32 usb_memsize;
// u32 usb_irq;
struct whed_usb_rx rx[RING_RX_BUF_SIZE];
struct whed_usb_tx tx;
u8 next_rx_bulkin_index;
u8 tx_in_use;
u8 clean_up;
u8 bulk_in_addr;
struct list_head tx_list;
spinlock_t tx_lock;
u8 tx_counter;
u8 *ctrl_buff;
u32 usb_tx_size;
void * priv;
};
dpriv = (struct whed_usb_priv *)ndev->priv;
dpriv->priv = (void *)(((long)(dpriv + 1) + 31) & ~31);//转化为long形+31 相当于+31*4个字节
大家可以讨论一下:dpriv->priv = (void *)(((long)(dpriv + 1) + 31) & ~31 有什么意义??
(void *)(((long)(dpriv + 1) + 31) & ~31)相当于dpriv加上多少个字节??31*4+1个?? dpriv->priv=......到底把什么给dpriv->priv了???
{
struct usb_device * usb_dev;
struct net_device * net_dev;
whed_urb_tx_queue *tx_qu;
struct tasklet_struct rx_bh;
spinlock_t q_lock;
struct semaphore dpriv_sem;
struct completion get_mac_completion;
// u32 usb_membase;
// u32 usb_memsize;
// u32 usb_irq;
struct whed_usb_rx rx[RING_RX_BUF_SIZE];
struct whed_usb_tx tx;
u8 next_rx_bulkin_index;
u8 tx_in_use;
u8 clean_up;
u8 bulk_in_addr;
struct list_head tx_list;
spinlock_t tx_lock;
u8 tx_counter;
u8 *ctrl_buff;
u32 usb_tx_size;
void * priv;
};
dpriv = (struct whed_usb_priv *)ndev->priv;
dpriv->priv = (void *)(((long)(dpriv + 1) + 31) & ~31);//转化为long形+31 相当于+31*4个字节
大家可以讨论一下:dpriv->priv = (void *)(((long)(dpriv + 1) + 31) & ~31 有什么意义??
(void *)(((long)(dpriv + 1) + 31) & ~31)相当于dpriv加上多少个字节??31*4+1个?? dpriv->priv=......到底把什么给dpriv->priv了???
作者: liuxiangqian 发布时间: 2008-12-24
语句意义在于保证 (((long)(dpriv + 1) + 31) & ~31) 的结果低5位为0。
dpriv您分成2个部分 dpriv=dprivH+dprivL. dprivH=dpriv-dpriv%32; dprivL=dpriv%32;
上边的算式可以如下表示:
(long)(dprivH)&~31+(long)(dprivL+1+31)&~31
因为dprivL的值为0~31,所以上面的表达式值为
dprivH+32
dpriv您分成2个部分 dpriv=dprivH+dprivL. dprivH=dpriv-dpriv%32; dprivL=dpriv%32;
上边的算式可以如下表示:
(long)(dprivH)&~31+(long)(dprivL+1+31)&~31
因为dprivL的值为0~31,所以上面的表达式值为
dprivH+32
作者: 风雪狂客 发布时间: 2008-12-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28