code depository :get from file then save to file

static void get_from_file(int file_pos)
{
    char *fname,*fname_save;
    struct file * f = NULL,*f_save = NULL;
    mm_segment_t orig_fs,orig_fs_save;    
    int length_read,length_write;

    //get data from file
    fname = "/usr/8k2ch16bit.wav";
    f = filp_open(fname,  O_RDONLY, 00);

    if (!f || !f->f_op || !f->f_op->read)
      {
      printk("WARNING: File (read) object is a null pointer!!!/n");
      }

    f->f_pos = file_pos;    
    orig_fs = get_fs();
    
    set_fs(KERNEL_DS);       

    length_read = f->f_op->read(f, at6600_state.dma_dac.transfer_buffer,DEFAULT_BUFFER_LENGTH, &f->f_pos);
    if(length_read)
        printk("read from file %s:%d/n",fname,length_read);
    else
        printk("read fail/n");
    set_fs(orig_fs);       

    /* Release the file object pointer. */
    fput(f);

    

    
    fname_save = "/tmp/i2s.pcm";
    f_save = filp_open(fname_save,  O_RDWR|O_CREAT|O_APPEND, 00);

    if (!f_save|| !f_save->f_op || !f_save->f_op->write)
      {
      printk("WARNING: File (write) object is a null pointer!!!/n");
      }

    f_save->f_pos = file_pos;    
    orig_fs_save= get_fs();    
    set_fs(KERNEL_DS);  
    
    length_write = f_save->f_op->write(f_save, at6600_state.dma_dac.transfer_buffer,DEFAULT_BUFFER_LENGTH, &f_save->f_pos);
    if(length_write)
        printk("write to file %s:%d/n",fname_save,DEFAULT_BUFFER_LENGTH);
    else
        printk("read fail/n");
    set_fs(orig_fs_save);  
    
    /* Release the file object pointer. */
    fput(f_save);
    return;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值