I am not using kld to implement my system call.  I am just using the old way.  
But I tried using pointers also.  But I am not getting the correct returned 
values either...


>===== Original Message From Terry Lambert <[EMAIL PROTECTED]> =====
>> I just try to add a simple system call for testing:
>>
>> int my_call(int x, int y) {
>>    return (x + y);
>> }
>>
>> In my user program:
>>
>> int main(int argc, char ** argv) {
>>    int x = 3;
>>    int y = 8;
>>    int z = 0;
>>    z = syscall(SYS_my_call, x, y);
>>    printf("%i + %i = %i\n", x, y, z);
>>    return 0;
>> }
>>
>> But it prints:
>>
>> 3 + 8 = -1
>>
>> Can you give me some idea what I did wrong and what I should do? Also, can
>> you tell me how to use the SYSCALL macro because I am not familiar with
>> macros at all? Thanks in advance.
>
>Change this to:
>
>int
>my_call(int x, int y, int *result)
>{
>       *result = x + y;
>       return( 0);
>}
>
>int
>main( int ac, char **av)
>{
>       int x = 3;
>       int y = 8;
>       int z = 0;
>       if( syscall(SYS_my_call, x, y, &z) != 0) {
>               perror("system call failed!");
>               exit( 1);
>       }
>       printf("%i + %i = %i\n", x, y, z);
>       return 0;
>}
>
>---
>
>Since you aren't checking for failure of your system call, you
>are confusing a failure of the call with an incorrect result.
>
>I suspect you will see the error "ENOENT", meaning that your
>system call has not been loaded into the kernel, and had its
>function pointer inserted into sysent[ SYS_my_call].
>
>Look at the KLD documentation and examples on how to load
>system calls into the kernel.  see also "kldstat", which
>should tell you where your system call was loaded (i.e. it
>will give you the value you need to pass as "SYS_my_call"
>to syscall(2) for things to work).
>
>
>                                       Terry Lambert
>                                       [EMAIL PROTECTED]
>---
>Any opinions in this posting are my own and not those of my present
>or previous employers.



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to