On Sun, 2011-03-13 at 21:51 +0800, xinyou yan wrote: > 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. > As a general rule, using static parameters in kernel space is considered hazardous; nevertheless, a 128 bytes is relatively safe. > 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 ? I'm not sure what you mean. But in general, yes, you could register a character device that has read/write/seek operations on a memory buffer. (Preferably, dynamically allocated memory buffer) A relatively simple (and easy to understand / implement) example is the /proc file system. (Search for create_proc_entry in the kernel code) > 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@xxxxxxxxx>: > > 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. > >> > >> 3. 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 > >> > >> 4. make menuconfig > >> 5. 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: > > 1. 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@xxxxxxxxxxxxxxxxxxxxxxx > > To unsubscribe or change subscription options: > > https://admin.fedoraproject.org/mailman/listinfo/users > > Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines > > -- users mailing list users@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe or change subscription options: https://admin.fedoraproject.org/mailman/listinfo/users Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines