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