|
下面是利用共享内存进行数据收发的代码
area->p指向attach的共享内存区。当前的问题是调用发送函数后,利用接受函数不能收到数据,我怀疑是指针转换所引起,请问如何改正?谢谢!
#pragma pack(1)
struct proxy_map {
struct list_head list;
u_int32_t magic;
union {
char i_ip[16];
}key;
u_int32_t i_sess;
char i_username[MAXNAMELEN];
char i_password[MAXNAMELEN];
char o_ifdev[32];
char o_ip[16];
u_int32_t o_sess;
pid_t server_point_pid;
pid_t client_point_pid;
enum {
I_REQUIRE_CONN=1,
I_DISCONN,
O_REQUIRE_PROXY,
O_DISCONN,
ESTABLISHED,
UNDEFINED
}stat;
};
#pragma pack()
void proxy_ipc_snd(struct proxy_ipc_area *area, struct proxy_map *pm)
{
struct proxy_map *tmp;
unsigned char *c=(unsigned char *)pm;
if ((area==NULL) ||(area->p==NULL) ||(pm==NULL)) return;
tmp=(struct proxy_map *)area->p;
while (tmp->magic==MAGIC_NUM) {
;
}
p(area->sem_id);
memcpy(area->p,c,PM_SIZE);
v(area->sem_id);
return;
}
void proxy_ipc_rcv(struct proxy_ipc_area *area, struct proxy_map *pm)
{
unsigned char *c=(unsigned char *)pm;
if ((area==NULL) ||(area->p==NULL) ||(pm==NULL)) return;
p(area->sem_id);
memcpy(c, area->p,PM_SIZE);
v(area->sem_id);
return;
} |
|