void ipv_init(t_ipv *ipv, int ac, char **av) { bzero(ipv, sizeof(t_ipv)); get_opt(ipv, ac, av); init_bc(&ipv->fd.buf_read); init_bc(&ipv->fd.buf_write); ipv->state = _connect; }
int S3C_BC_Bridge(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { int err = -EFAULT; int command = _IOC_NR(cmd); S3C_BC_ioctl_package *psBridge = (S3C_BC_ioctl_package *)arg; if(!access_ok(VERIFY_WRITE, psBridge, sizeof(S3C_BC_ioctl_package))) { return err; } switch(command) { case _IOC_NR(S3C_BC_ioctl_get_physical_base_address): { #if 0 if(init == 0) { init = 1; init_bc(); } #endif psBridge->outputparam = S3C_BC_DEVICE_PHYS_ADDR_START; break; } case _IOC_NR(S3C_BC_ioctl_get_buffer_info): { S3C_BC_Buffer_info_t *pBuffInfo = (S3C_BC_Buffer_info_t *)arg; BUFFER_INFO buf; printk("+S3C_BC_Buffer_Info\n"); if (!access_ok(VERIFY_WRITE, pBuffInfo, sizeof(PS3C_BC_Buffer_info_t))) return -EFAULT; S3C_BC_Buffer_Info(0, &buf); pBuffInfo->ui32BufferCount = buf.ui32BufferCount; pBuffInfo->pixelformat = buf.pixelformat; pBuffInfo->ui32ByteStride = buf.ui32ByteStride; pBuffInfo->ui32Width = buf.ui32Width; pBuffInfo->ui32Height= buf.ui32Height; printk("S3C_BC_Buffer_Info\n"); break; } default: return err; } return 0; }
void c_cmd_buf::start_bc(void) { //开始广播 //输入:无 //输出:无 //cout << "c_cmd_buf::start_bc" << endl; //查找广播uid的socket //加入写监听 set<int>::iterator it; int cli,no; for(it = obj_bc.to.begin();it != obj_bc.to.end();++it){ cli = *it; //用户ID //cerr << "*it=" << *it << endl; no = p_us->nobyuid(cli); if(no<0){continue;} //客户端不存在 // if(p_gms->get_more(cli,buf_)) // p_bufio->push_write(fd,buf_,strlen(buf_)+1); if(p_bl->get_more(cli,buf_)) p_sockls->push_write(no,buf_,strlen(buf_)+1); //p_bufio->(buf_,strlen(buf_)+1,fd); } init_bc(); /**/ }