android内核读取file文件

内核读取file文件的方法:

char* file_read(const char * file_path) 
{
    struct file *file = NULL; //保存打开文件的文件指针变量
    struct inode *inode = NULL; //为了获取文件大小用的inode结构变量
    char *file_buf; //保存开辟的内存空间的地址的指针变量
    loff_t fsize; //保存文件大小的变量
    mm_segment_t old_fs; //保存内存边界的变量
    static char error[] = "none"; 
    file = filp_open(file_path,O_RDWR,0664);//打开文件
    
    if (IS_ERR(file)) 
      {return error;
      }
    inode = file->f_dentry->d_inode;//获取文件的大小
    fsize = inode->i_size;
    old_fs = get_fs();
    set_fs(KERNEL_DS);
    
    loff_t *pos = &(file->f_pos);
    file_buf = (char *)kmalloc(fsize+1,GFP_KERNEL);
    
    vfs_read(file, file_buf, fsize, pos); //读操作
    
    filp_close(file, NULL); //关闭文件
    
    set_fs(old_fs);//边界恢复
    
    return file_buf;
}

字符串转int的方法:

int string_to_int(const char *str){
    int result = 0;
    int signal = 1;
    if(((*str>='0')&&(*str<='9'))||(*str=='-')||(*str=='+')){
        if((*str=='-')||(*str=='+')){
            if((*str=='-')){
                signal = -1;
                str++;
            }
        }
    }else{
        return 65;
    }
    while((*str>='0')&&(*str<='9')){
        result = result*10 + (*str++ - '0');
    }
    return signal*result;
}

 

posted @ 2013-06-27 15:21  我叫大大  阅读(958)  评论(0)    收藏  举报