Date: Tue, 31 Oct 2000 14:08:38 -0500 From: Raymond Law <rlaw@vt.edu> To: freebsd-questions@freebsd.org Subject: Re: Add a system call Message-ID: <4.3.0.20001031140540.00d90de0@mail.vt.edu> In-Reply-To: <39D10614.9ECD8635@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Can someone list the steps on how to add a system call in FreeBSD 4 please? Thanks. Ray, At 03:24 PM 9/26/00 -0500, you wrote: >Hi, > >I have been trying to insert a new system call (very simple), >I have used the steps in the bottom without problems, >but I don't understand the behavior of the program: > >:::::::::::::: >mysyscall.c >:::::::::::::: >int mysyscall( int *n ) { > printf("In the kernel!\n"); > *n = ( *n + 1000); > return 0; >} > >:::::::::::::: >myprog.c >:::::::::::::: >int mysyscall (int * ); > >int main (void){ > int x = 500; > mysyscall(&x); > printf("x= %i\n",x); >} > >The kernel syscall apparently run but it doesn't modify the variable. > >$cc -o miprog miprog.c >$ ./miprog >x= 500 > >In the kernel! <--- is showed in the console. > >If I compile with the function (syscall), it works apparently correctly. > >$cc -o miprog miprog.c mysyscall.c >$ ./miprog >In the kernel! >x= 1500 > >Thanks for your help. > >Yonny Cardenas B. > >-------------------------------------------------------------------------- >In Mon, 17 May 1999 Zhihui Zhang <zzhang@cs.binghamton.edu> wrote: > >I have used the following steps to add system calls to FreeBSD 3.1 >several >times. Suppose you want to add a system call: >int mysys(int a, int b, int c). You can do the following steps: > >(1) # cd /usr/src/sys/kern >(2) # vi syscalls.master to add your system call into the file: > 172 STD BSD { int mysys(int a, int b, int c); } >(3) # sh makesyscalls.sh syscalls.master > This creates three files: syscall.h, syscall-hide.h, and sysproto.h. >(4) # vi mysys.c > Edit your file to implement your mysys(). You can follow the file > kern/vfs_syscalls.c. >(6) # vi /sys/conf/files to add you file mysys.c into it. >(7) Make a new kernel and install it (see FreeBSD handbook) >The following steps update the libc library: >(8) copy syscall.h, syscall-hide.h, and sysproto.h to /usr/include/sys >(9) # cd /usr/src/lib/libc >(10) # make obj >(11) # make depend >(12) # make all >(13) # make insall >Now you can reboot your machine and write a program that uses your >mysys(). >-------------------------------------------------------------------------- > >+-------------------------------------------------------------------------+ >| YONNY CARDENAS B. | Tels: +57 1 3451543, 3451554 | >| | 3451565, 2176251 ext. 16 | >| Opus Ingenieria | Fax : +57 1 3458343 | >| Calle 61 # 5-44 Piso 3 | E-mail: y-carden@uniandes.edu.co | >| Santafe de Bogota D.C.,Colombia | ycardena@yahoo.com | >+-------------------------------------------------------------------------+ > > >To Unsubscribe: send mail to majordomo@FreeBSD.org >with "unsubscribe freebsd-questions" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4.3.0.20001031140540.00d90de0>