亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 64位系統(tǒng)上裝32位應(yīng)用程序和驅(qū)動通信 [打印本頁]

作者: 978215369    時間: 2014-09-25 14:11
標(biāo)題: 64位系統(tǒng)上裝32位應(yīng)用程序和驅(qū)動通信
系統(tǒng)是64位,在此系統(tǒng)上編譯的驅(qū)動程序和32位應(yīng)用程序通過netlink通信,sendto中的buf從應(yīng)用程序發(fā)送到內(nèi)核態(tài)驅(qū)動,發(fā)生了變化,

struct sockaddr_nl peer;
struct io_filter_init_request *init_request = NULL;
給init_request賦值
sendto(_sockfd, init_request, init_request->hdr.nlmsg_len, 0, (struct sockaddr*)&peer, sizeof(peer)

struct io_filter_init_request {
        struct nlmsghdr hdr;
        __u32        item_cnt;                                                //elements contained in init_info
        struct io_filter_src_limit src_limit;
        struct io_filter_init_info init_info[];
};

struct io_filter_init_info {
        __u16 major_no;                                                        // major device number
          __u16 minor_no;                                                        // minor device number
        __u32 sec_size;                                                        // sector size
        __u32 bl_size;                                                        // block size
        __u8 mount_point[DISK_DOS_NAME_LEN];        // /a
        __u8 dev_name[DISK_DOS_NAME_LEN];                // /dev/sda1
        __u8 log_path[DISK_DOS_NAME_LEN];                // /b
        __u8 dev_name_log[DISK_DOS_NAME_LEN];        // /dev/sda2
}__attribute__((__packed__));

init_request賦值后, sendto之前和內(nèi)核sock收到之前,發(fā)生了很大變化,內(nèi)核收到的__u8 mount_point[DISK_DOS_NAME_LEN]和下面的dev_name, log_path, dev_name_log與真實的值相比少了前四個字符,major_no以及下面的minor,sec_size, bl_size傳的值接收到的都不對。


環(huán)境為64位系統(tǒng),編譯的驅(qū)動程序如果和64位的應(yīng)用程序通信,就沒有此問題,請高人幫忙解答





歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2