It is a homework . Use a kernel spcae as a char decieve Which can offer open write and so on.
I just use a char buffer[128] in kernel space.
Then i have some ideas. I can use kernel space as char device. I can also use kernel spcae as a file system? Could it be ? If memory can be a filesystem . Can i use a file to simulate 。 It just not be taken as a file . Like something we store file in it.
2011/3/13 Gilboa Davara gilboad@gmail.com:
On Thu, 2011-03-10 at 15:17 +0800, xinyou yan wrote:
I want to and a new syscall 1 add .long sys_mysyscall in arch/x86/kernel/syscall_table_32.S
2 add #define __NR_mysyscall 341 in arch/x86/include/asm/unistd_32.
- add
asmlinkage int sys_mysyscall(char* sourceFile,char* destFile) { int source=sys_open(sourceFile,O_RDONLY,0); int dest=sys_open(destFile,O_WRONLY|O_CREAT|O_TRUNC,0600); char buf[1024]; mm_segment_t fs; fs = get_fs(); set_fs(get_ds()); int nread;
if(source>0 && dest>0) { while((nread=sys_read(source,buf,1024)) > 0) sys_write(dest,buf,read); } else { printk("Error!"); } sys_close(source); sys_close(dest); set_fs(fs); return 0;
} in kerrnel/sys.c
- make menuconfig
- make all
6 make modules_install
reboot
Now I want just do it one time How can i make sure the new syscall here is mysyscall work fine ?
Are you locked on using syscalls? Unless you really require syscalls, I'd imagine that it's far easier to use ioctl's instead (doesn't require a custom kernel), and use filp_open / filp_close / file->read / file->write to access files from within kernel space.
Two more things:
- I'd avoid using stack based allocations in kernel mode. (Down to 8KB
in certain situations) 2. Always check error codes.
- Gilboa
-- users mailing list users@lists.fedoraproject.org To unsubscribe or change subscription options: https://admin.fedoraproject.org/mailman/listinfo/users Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines