All of lore.kernel.org
 help / color / mirror / Atom feed
* adding a system call
@ 2011-02-22 15:14 mohit verma
  2011-02-22 15:18 ` mohit verma
  0 siblings, 1 reply; 14+ messages in thread
From: mohit verma @ 2011-02-22 15:14 UTC (permalink / raw)
  To: kernelnewbies

hi all ,
i followed the link and tried to add a system call in kernel-version 2.6.37
here is the code :


#include<linux/linkage.h>
#include<linux/kernel.h>
#include<linux/fs.h>  //for getname
#include<linux/err.h> //for PTR_ERR
asmlinkage int sys_hariohm(const char __user *filename)
{
    char *tmp = getname(filename);
     int fd=PTR_ERR(tmp);
        if (!IS_ERR(tmp))
        {
        printk("filename %s \n",tmp);
        putname(tmp);
        return fd;
        }
        else
        {
        return 2;
        }
}


the compilation process was silent (without any error).
 but when i try to boot into the kernel having this system call , i get the
errors like :

do_exit() ,do_group_exit() , syscall_init() error lines with some addresses.

can someone help me understand what is wrong with this code?

thanks in advance :)

-- 
........................
*MOHIT VERMA*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110222/7eff007d/attachment.html 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 15:14 adding a system call mohit verma
@ 2011-02-22 15:18 ` mohit verma
  2011-02-22 17:50   ` Mulyadi Santosa
  0 siblings, 1 reply; 14+ messages in thread
From: mohit verma @ 2011-02-22 15:18 UTC (permalink / raw)
  To: kernelnewbies

hi all ,

> i followed the link and tried to add a system call in kernel-version 2.6.37
>
> here is the code :
>
>
> #include<linux/linkage.h>
> #include<linux/kernel.h>
> #include<linux/fs.h>  //for getname
> #include<linux/err.h> //for PTR_ERR
> asmlinkage int sys_hariohm(const char __user *filename)
> {
>     char *tmp = getname(filename);
>      int fd=PTR_ERR(tmp);
>         if (!IS_ERR(tmp))
>         {
>         printk("filename %s \n",tmp);
>         putname(tmp);
>         return fd;
>         }
>         else
>         {
>         return 2;
>         }
> }
>
>
> the compilation process was silent (without any error).
>  but when i try to boot into the kernel having this system call , i get the
> errors like :
>
> do_exit() ,do_group_exit() , syscall_init() error lines with some
> addresses.
>
> can someone help me understand what is wrong with this code?
>
> thanks in advance :)
>
> and also when i  tried to boot into this kernel , it was showing some *
initrafs*  error.

> --
> ........................
> *MOHIT VERMA*
>
>


-- 
........................
*MOHIT VERMA*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110222/59532f0c/attachment.html 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 15:18 ` mohit verma
@ 2011-02-22 17:50   ` Mulyadi Santosa
  2011-02-22 18:01     ` mohit verma
  0 siblings, 1 reply; 14+ messages in thread
From: Mulyadi Santosa @ 2011-02-22 17:50 UTC (permalink / raw)
  To: kernelnewbies

On Tue, Feb 22, 2011 at 22:18, mohit verma <mohit89mlnc@gmail.com> wrote:
> hi all ,
>>
>> i followed the link and tried to add a system call in kernel-version
>> 2.6.37
>> here is the code :
>>
>>
>> #include<linux/linkage.h>
>> #include<linux/kernel.h>
>> #include<linux/fs.h>? //for getname
>> #include<linux/err.h> //for PTR_ERR
>> asmlinkage int sys_hariohm(const char __user *filename)
>> {
>> ??? char *tmp = getname(filename);
>> ???? int fd=PTR_ERR(tmp);
>> ??????? if (!IS_ERR(tmp))
>> ??????? {
>> ??????? printk("filename %s \n",tmp);
>> ??????? putname(tmp);
>> ??????? return fd;
>> ??????? }
>> ??????? else
>> ??????? {
>> ??????? return 2;
>> ??????? }
>> }

which syscall number did you assigned to this syscall? and exactly how
do you assign it?

NB: your code style doesn't follow the Linux kernel coding standart....

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 17:50   ` Mulyadi Santosa
@ 2011-02-22 18:01     ` mohit verma
  2011-02-22 18:10       ` Mulyadi Santosa
  0 siblings, 1 reply; 14+ messages in thread
From: mohit verma @ 2011-02-22 18:01 UTC (permalink / raw)
  To: kernelnewbies

hi mulyadi,

i used syscall number 264 . and for the coding standard  , can u tell me
where am i  off the track ?



On Tue, Feb 22, 2011 at 11:20 PM, Mulyadi Santosa <mulyadi.santosa@gmail.com
> wrote:

> On Tue, Feb 22, 2011 at 22:18, mohit verma <mohit89mlnc@gmail.com> wrote:
> > hi all ,
> >>
> >> i followed the link and tried to add a system call in kernel-version
> >> 2.6.37
> >> here is the code :
> >>
> >>
> >> #include<linux/linkage.h>
> >> #include<linux/kernel.h>
> >> #include<linux/fs.h>  //for getname
> >> #include<linux/err.h> //for PTR_ERR
> >> asmlinkage int sys_hariohm(const char __user *filename)
> >> {
> >>     char *tmp = getname(filename);
> >>      int fd=PTR_ERR(tmp);
> >>         if (!IS_ERR(tmp))
> >>         {
> >>         printk("filename %s \n",tmp);
> >>         putname(tmp);
> >>         return fd;
> >>         }
> >>         else
> >>         {
> >>         return 2;
> >>         }
> >> }
>
> which syscall number did you assigned to this syscall? and exactly how
> do you assign it?
>
> NB: your code style doesn't follow the Linux kernel coding standart....
>
> --
> regards,
>
> Mulyadi Santosa
> Freelance Linux trainer and consultant
>
> blog: the-hydra.blogspot.com
> training: mulyaditraining.blogspot.com
>



-- 
........................
*MOHIT VERMA*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110222/193b6a1e/attachment-0001.html 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 18:01     ` mohit verma
@ 2011-02-22 18:10       ` Mulyadi Santosa
  2011-02-22 18:19         ` mohit verma
  0 siblings, 1 reply; 14+ messages in thread
From: Mulyadi Santosa @ 2011-02-22 18:10 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Feb 23, 2011 at 01:01, mohit verma <mohit89mlnc@gmail.com> wrote:
> hi mulyadi,
>
> i used syscall number 264 . and for the coding standard? , can u tell me
> where am i? off the track ?

Exactly, how do you add "264" as the syscall number? the diff...I mean...

NB: find lindent script for style reformatting...

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 18:10       ` Mulyadi Santosa
@ 2011-02-22 18:19         ` mohit verma
  2011-02-22 18:39           ` Mulyadi Santosa
  0 siblings, 1 reply; 14+ messages in thread
From: mohit verma @ 2011-02-22 18:19 UTC (permalink / raw)
  To: kernelnewbies

mulyadi ,
i followed the link
https://sites.google.com/a/ce-jmi.edu.in/tarique/adding-a-system-call-to-linux-2
.

modified files are:

1. /usr/src/kernels/linux-2.6.37/arch/x86/kernel/syscall_table_32.S

2. /usr/src/kernels/linux-2.6.37/include/asm-frv/unistd.h

3. /usr/src/kernels/linux-2.6.37/include/linux/syscalls.h

4. /usr/src/kernels/linux-2.6.37/Makefile
and i added:
1. #define __NR_hariohm 264
__SYSCALL(__NR_hariohm, sys_hariohm) in unistd.h file.

2.asmlinkage int sys_hariohm(const char __user *filename);  in file
syscalls.h

3. .long sys_hariohm  /* our system call */  in syscall_table_32.S

4 core-y        += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ *hariohm/*
in makefile



On Tue, Feb 22, 2011 at 11:40 PM, Mulyadi Santosa <mulyadi.santosa@gmail.com
> wrote:

> On Wed, Feb 23, 2011 at 01:01, mohit verma <mohit89mlnc@gmail.com> wrote:
> > hi mulyadi,
> >
> > i used syscall number 264 . and for the coding standard  , can u tell me
> > where am i  off the track ?
>
> Exactly, how do you add "264" as the syscall number? the diff...I mean...
>
> NB: find lindent script for style reformatting...
>
> --
> regards,
>
> Mulyadi Santosa
> Freelance Linux trainer and consultant
>
> blog: the-hydra.blogspot.com
> training: mulyaditraining.blogspot.com
>



-- 
........................
*MOHIT VERMA*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110222/9bdb30ff/attachment.html 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 18:19         ` mohit verma
@ 2011-02-22 18:39           ` Mulyadi Santosa
  2011-02-22 18:44             ` mohit verma
  0 siblings, 1 reply; 14+ messages in thread
From: Mulyadi Santosa @ 2011-02-22 18:39 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Feb 23, 2011 at 01:19, mohit verma <mohit89mlnc@gmail.com> wrote:
> and i added:
> 1. #define __NR_hariohm 264
> __SYSCALL(__NR_hariohm, sys_hariohm) in unistd.h file.

grepping inside unistd.h, I got

#undef __NR_syscalls
#define __NR_syscalls 264

So, it seems that you violate one rule: you add a syscall but didn't
increase the  number of total syscalls registered.

Am I right or am I right?

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 18:39           ` Mulyadi Santosa
@ 2011-02-22 18:44             ` mohit verma
  2011-02-22 21:21               ` Anuz Pratap Singh Tomar
  0 siblings, 1 reply; 14+ messages in thread
From: mohit verma @ 2011-02-22 18:44 UTC (permalink / raw)
  To: kernelnewbies

ok  mulyadi ,
i got u late  what u  wanted to see . here are the diff files
sorry for delay.

On Wed, Feb 23, 2011 at 12:09 AM, Mulyadi Santosa <mulyadi.santosa@gmail.com
> wrote:

> On Wed, Feb 23, 2011 at 01:19, mohit verma <mohit89mlnc@gmail.com> wrote:
> > and i added:
> > 1. #define __NR_hariohm 264
> > __SYSCALL(__NR_hariohm, sys_hariohm) in unistd.h file.
>
> grepping inside unistd.h, I got
>
> #undef __NR_syscalls
> #define __NR_syscalls 264
>
> So, it seems that you violate one rule: you add a syscall but didn't
> increase the  number of total syscalls registered.
>
> Am I right or am I right?
>
> --
> regards,
>
> Mulyadi Santosa
> Freelance Linux trainer and consultant
>
> blog: the-hydra.blogspot.com
> training: mulyaditraining.blogspot.com
>



-- 
........................
*MOHIT VERMA*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110223/51a33a1b/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: my4
Type: application/octet-stream
Size: 454 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110223/51a33a1b/attachment.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: my3
Type: application/octet-stream
Size: 529 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110223/51a33a1b/attachment-0001.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: my2
Type: application/octet-stream
Size: 517 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110223/51a33a1b/attachment-0002.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: my1
Type: application/octet-stream
Size: 375 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110223/51a33a1b/attachment-0003.obj 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
  2011-02-22 18:44             ` mohit verma
@ 2011-02-22 21:21               ` Anuz Pratap Singh Tomar
  0 siblings, 0 replies; 14+ messages in thread
From: Anuz Pratap Singh Tomar @ 2011-02-22 21:21 UTC (permalink / raw)
  To: kernelnewbies

On Tue, Feb 22, 2011 at 6:44 PM, mohit verma <mohit89mlnc@gmail.com> wrote:

> ok  mulyadi ,
> i got u late  what u  wanted to see . here are the diff files
> sorry for delay.
>
>
There is a good illustration of "how to add syscalls to kernel" y given in
Robert Love's book LKD, refer it.
when you attach files like these please follow a convention like naming them
as mypatch.patch, mypatch.diff or even mypatch.txt. not all mail clients can
read these files and may drop them.
Please DON'T top post, its annoying.
For coding standards please refer for coding style guide by Linus, its
inside the Documentation directory inside the kernel source.
There are many utilities like patchcheck.pl and indent, which can make your
code more readable.

-A


>
> On Wed, Feb 23, 2011 at 12:09 AM, Mulyadi Santosa <
> mulyadi.santosa at gmail.com> wrote:
>
>> On Wed, Feb 23, 2011 at 01:19, mohit verma <mohit89mlnc@gmail.com> wrote:
>> > and i added:
>> > 1. #define __NR_hariohm 264
>> > __SYSCALL(__NR_hariohm, sys_hariohm) in unistd.h file.
>>
>> grepping inside unistd.h, I got
>>
>> #undef __NR_syscalls
>> #define __NR_syscalls 264
>>
>> So, it seems that you violate one rule: you add a syscall but didn't
>> increase the  number of total syscalls registered.
>>
>> Am I right or am I right?
>>
>> --
>> regards,
>>
>> Mulyadi Santosa
>> Freelance Linux trainer and consultant
>>
>> blog: the-hydra.blogspot.com
>> training: mulyaditraining.blogspot.com
>>
>
>
>
> --
> ........................
> *MOHIT VERMA*
>
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110222/c2278f6a/attachment.html 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: adding a system call
  2001-01-09 19:17 ` Doug McNaught
@ 2001-01-09 19:34   ` Brian Pomerantz
  0 siblings, 0 replies; 14+ messages in thread
From: Brian Pomerantz @ 2001-01-09 19:34 UTC (permalink / raw)
  To: Mihai Moise; +Cc: Doug McNaught, linux-kernel

This can all be done with a device file and a corresponding module to
handle the mmap and any ioctl()'s you may want to support.  No need to
add another system call.


BAPper

On Tue, Jan 09, 2001 at 02:17:26PM -0500, Doug McNaught wrote:
> Mihai Moise <mcartoaj@mat.ulaval.ca> writes:
> 
> > My system call idea is to allow a superuser process to request a mmap on
> > behalf of an user process. To see how this would be useful, let us consider
> > svgalib.
> 
> [...]
> 
> > With my new system call, a superuser process can set the graphics mode in a
> > safe manner and then ask for an mmap of the video array into the application
> > data segment.
> 
> Ummm, couldn't the the root process open the video device, then pass
> the file descriptor (via AF_UNIX socket) to the user process?  The
> user process would then call mmap() on the open file descriptor. 
> 
> I'm not *completely* sure this would work, but it would avoid creating 
> a new system call if so.
> 
> -Doug
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> Please read the FAQ at http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: adding a system call
  2001-01-09 14:41 Mihai Moise
@ 2001-01-09 19:17 ` Doug McNaught
  2001-01-09 19:34   ` Brian Pomerantz
  0 siblings, 1 reply; 14+ messages in thread
From: Doug McNaught @ 2001-01-09 19:17 UTC (permalink / raw)
  To: Mihai Moise; +Cc: linux-kernel

Mihai Moise <mcartoaj@mat.ulaval.ca> writes:

> My system call idea is to allow a superuser process to request a mmap on
> behalf of an user process. To see how this would be useful, let us consider
> svgalib.

[...]

> With my new system call, a superuser process can set the graphics mode in a
> safe manner and then ask for an mmap of the video array into the application
> data segment.

Ummm, couldn't the the root process open the video device, then pass
the file descriptor (via AF_UNIX socket) to the user process?  The
user process would then call mmap() on the open file descriptor. 

I'm not *completely* sure this would work, but it would avoid creating 
a new system call if so.

-Doug
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: adding a system call
  2001-01-09  0:49 Mihai Moise
@ 2001-01-09 14:56 ` David Woodhouse
  0 siblings, 0 replies; 14+ messages in thread
From: David Woodhouse @ 2001-01-09 14:56 UTC (permalink / raw)
  To: Mihai Moise; +Cc: linux-kernel


mcartoaj@mat.ulaval.ca said:
>  What is the procedure for adding a new system call to the Linux
> kernel?

First: Convince people that it's necessary. 

--
dwmw2


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: adding a system call
@ 2001-01-09 14:41 Mihai Moise
  2001-01-09 19:17 ` Doug McNaught
  0 siblings, 1 reply; 14+ messages in thread
From: Mihai Moise @ 2001-01-09 14:41 UTC (permalink / raw)
  To: linux-kernel


> > What is the procedure for adding a new system call to the Linux kernel?
> 
> hack away, the code's free.  don't expect Linus to accept your 
> changes into the "real" kernel without a VERY good argument.

I know. However the Kernel Hacker's Guide writes about sys.h. After a bit of exploring, I found that sys.h has been replaced by something else in later kernels, which leaves me wondering where in the kernel I should insert my code, and where the dispatcher is located for the other system calls, in case my system call would need them.

My system call idea is to allow a superuser process to request a mmap on behalf of an user process. To see how this would be useful, let us consider svgalib.

Until now, there were two ways to allow an application access to the video array. The first was by making it setuid root, but this compromises system security by allowing it too many permissions. The second was by having a helper module which allows user applications access to the video card. However this allows any remote user to set the screen in flames.

With my new system call, a superuser process can set the graphics mode in a safe manner and then ask for an mmap of the video array into the application data segment.

Mihai
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 14+ messages in thread

* adding a system call
@ 2001-01-09  0:49 Mihai Moise
  2001-01-09 14:56 ` David Woodhouse
  0 siblings, 1 reply; 14+ messages in thread
From: Mihai Moise @ 2001-01-09  0:49 UTC (permalink / raw)
  To: linux-kernel

Hello,

What is the procedure for adding a new system call to the Linux kernel?

Mihai
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2011-02-22 21:21 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-22 15:14 adding a system call mohit verma
2011-02-22 15:18 ` mohit verma
2011-02-22 17:50   ` Mulyadi Santosa
2011-02-22 18:01     ` mohit verma
2011-02-22 18:10       ` Mulyadi Santosa
2011-02-22 18:19         ` mohit verma
2011-02-22 18:39           ` Mulyadi Santosa
2011-02-22 18:44             ` mohit verma
2011-02-22 21:21               ` Anuz Pratap Singh Tomar
  -- strict thread matches above, loose matches on Subject: below --
2001-01-09 14:41 Mihai Moise
2001-01-09 19:17 ` Doug McNaught
2001-01-09 19:34   ` Brian Pomerantz
2001-01-09  0:49 Mihai Moise
2001-01-09 14:56 ` David Woodhouse

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.