内核读取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,);//打开文件 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+,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 = ;
int signal = ;
if(((*str>='')&&(*str<=''))||(*str=='-')||(*str=='+')){
if((*str=='-')||(*str=='+')){
if((*str=='-')){
signal = -;
str++;
}
}
}else{
return ;
}
while((*str>='')&&(*str<='')){
result = result* + (*str++ - '');
}
return signal*result;
}