rebuild kernel add syscall

xinyou yan yxy.716 at gmail.com
Sun Mar 13 13:51:20 UTC 2011


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 at 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.
>>
>> 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 at lists.fedoraproject.org
> To unsubscribe or change subscription options:
> https://admin.fedoraproject.org/mailman/listinfo/users
> Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
>


More information about the users mailing list