Ejemplo n.º 1
0
void main(int argc, char* argv[])
{
    SHM_FD fd,fd1;

    shm_init(SHM_PULL_MODEL);
    do{
        fd= shm_chn_attach(3);
        sleep(1);
    }while(-1== fd);

    SHARE_BUF_NODE *r_tmp;
    r_tmp= malloc(sizeof(SHARE_BUF_NODE));

    if(argc< 2){
        printf("usage: test_pull filename!\n");
    }

    FILE* file_fd;//output file path
    ssize_t wr_size;//write size

    file_fd= fopen(argv[1], "wb");//open output file
    if(NULL== file_fd){
        printf("file open error!\n");
        return;
    }

    while(1)
    {
        int handle= shm_pull(fd, r_tmp);//pull data from shm channel

        wr_size= fwrite(r_tmp->share_pt, 1, r_tmp->share_size, file_fd);//write data to output file
        if(-1== wr_size){
            printf("write error!\n");
            return ;
        }
//        printf("share mem buffer size is %d\n",r_tmp->share_size);
        shm_release(handle);

        if(5000!= wr_size){
            fclose(file_fd);
            return;
        }
    }
}
Ejemplo n.º 2
0
int syscall_shm_pull(int shmid, unsigned int pagenum, void *addr)
{
  if((unsigned long)addr < CFG_MEM_KERNELMAX)
    return ERRNO_NOTEXIST;
  return shm_pull(shmid, pagenum, addr);
}