A confusion about invoking my syscall

王哲 wangzhe5004 at gmail.com
Tue Jun 19 00:32:02 EDT 2012


2012/6/19 Jeff Haran <jharan at bytemobile.com>

>  ** **
>
> ** **
>
> *From:* kernelnewbies-bounces at kernelnewbies.org [mailto:
> kernelnewbies-bounces at kernelnewbies.org] *On Behalf Of *??
> *Sent:* Monday, June 18, 2012 6:40 PM
> *To:* kernelnewbies
> *Subject:* A confusion about invoking my syscall****
>
> ** **
>
> Hello everyone:
>
>          I append a simple syscall in kernel. and the function is as
> follows:
>
>   asmlinkage  long sys_mysyscall(long data)
>  {
>           printk("This is my syscall!\n");
>           return data;
>   }
>
> and i test it sucessfully in user space . and the test program:
>
>    #include
> <linux/unistd.h>
>
>    #include <syscall.h>
>    #include <sys/types.h>
>    #include <stdio.h>
>
>
>
>    int main(void)
>    {
>    long n = 0,m = 0,pid1,pid2;
>    n = syscall(345,190);// #define __NR_mysyscall          345
>    printf("n = %ld\n",n);
>    pid1 = syscall(SYS_getpid);  //getpid
>    printf("pid = %ld\n",pid1);
>    pid2 = syscall(20);  //getpid
>    printf("pid = %ld\n",pid2);
>    return 0;
>   }
> and the result:
> n = 190
> pid = 4097
> pid = 4097
>
> but if the test program is:
> #include <linux/unistd.h>
> #include <syscall.h>
> #include <sys/types.h>
> #include <stdio.h>
>
>
>
> int main(void)
> {
>  long n = 0,m = 0,pid1,pid2;
>  n = syscall(345,190);// #define __NR_mysyscall          345
>  printf("n = %ld\n",n);
>  m = syscall(SYS_mysyscall,190);
>  printf("m = %ld\n",m);
>  pid1 = syscall(SYS_getpid);  //getpid
>  printf("pid = %ld\n",pid1);
>  pid2 = syscall(20);  //getpid
>  printf("pid = %ld\n",pid2);
>  return 0;
> }
> and the result:
> wanny at wanny-C-Notebook-XXXX:~/syscall/src$ gcc test1.c
> test1.c: In function ‘main’:
> test1.c:13:14: error: ‘SYS_mysyscall’ undeclared (first use in this
> function)
> test1.c:13:14: note: each undeclared identifier is reported only once for
> each function it appears in
>
>
> why i can't invoke my syscall with "SYS_mysyscall"?
>
> Thanks in advance!
>
> Because it appears you never defined the symbol SYS_mysyscall.****
>
> ** I think so,but where shoud i defne the  **symbol SYS_mysyscall ?
>
  and where is the symbol SYS_getpid defined?
>
>
>


> Jeff Haran
>  ****
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20120619/f16c0ed4/attachment.html 


More information about the Kernelnewbies mailing list