Я написал модуль ядра, который экспортирует некоторое количество данных в созданную запись процедуры.Если объем данных меньше, я мог бы легко создать запись proc и экспортировать данные.Но если объем данных велик, это дает ошибку переполнения буфера.
Я использовал функцию int read_proc(char *buf,char **start,off_t offset,int count, int *eof, void *data)
для экспорта данных.И я написал данные как:
length =sprintf(buf,"The RESTART_SYSCALL address is %x\n",syscall_table[__NR_restart_syscall]);
length +=sprintf(buf+length,"The EXIT address is %x\n",syscall_table[__NR_exit]);
length +=sprintf(buf+length,"The FORK address is %x\n",syscall_table[__NR_fork]);
length +=sprintf(buf+length,"The READ address is %x\n",syscall_table[__NR_read]);
length +=sprintf(buf+length,"The WRITE address is %x\n",syscall_table[__NR_write]);
length +=sprintf(buf+length,"The OPEN address is %x\n",syscall_table[__NR_open]);
length +=sprintf(buf+length,"The CLOSE address is %x\n",syscall_table[__NR_close]);
length +=sprintf(buf+length,"The WAITPID address is %x\n",syscall_table[__NR_waitpid]);
length +=sprintf(buf+length,"The CREAT address is %x\n",syscall_table[__NR_creat]);
length +=sprintf(buf+length,"The LINK address is %x\n",syscall_table[__NR_link]);
length +=sprintf(buf+length,"The UNLINK address is %x\n",syscall_table[__NR_unlink]);
length +=sprintf(buf+length,"The EXECVE address is %x\n",syscall_table[__NR_execve]);
length +=sprintf(buf+length,"The TIME address is %x\n",syscall_table[__NR_time]);
length +=sprintf(buf+length,"The MKNOD address is %x\n",syscall_table[__NR_mknod]);
length +=sprintf(buf+length,"The LCHOWN address is %x\n",syscall_table[__NR_lchown]);
length +=sprintf(buf+length,"The BREAK address is %x\n",syscall_table[__NR_break]);
length +=sprintf(buf+length,"The OLDSTAT address is %x\n",syscall_table[__NR_oldstat]);
length +=sprintf(buf+length,"The LSEEK address is %x\n",syscall_table[__NR_lseek]);
length +=sprintf(buf+length,"The GETPID address is %x\n",syscall_table[__NR_getpid]);
-----------------------------------
---------------------------------
---------------------------------
Я прочитал, что по умолчанию экспортируется только один PAGE_SIZE, то есть 4 КБ.Я сослался на LDD, чтобы найти способ экспортировать большое количество данных.Но я не мог понять, что там написано.Может ли кто-нибудь помочь мне в этом.