* [EMAIL PROTECTED] <[EMAIL PROTECTED]> [010723 19:47] wrote:
> Hello
> I am experimenting with kernel modules and am trying to write to a file.
> This is the syscall function (sorry of my terminology is messed up)
> 
> static int write_file(struct proc *p, void *arg) {
>       struct write_args *wstructure;
>       struct open_args *ostructure;
> 
>       ostructure->path="/tmp/blehfile";
>       ostructure->flags = O_CREAT;
>       ostructure->mode = 0;
>       wstructure->fd = open(p, ostructure);
>       wstructure->buf = "Testing\n";
>       wstructure->nbytes = 8; 
>       return write(p, wstructure);
> }
> 
> Im not sure why, but that code crashes.  Was created with:
> echo Hi > /tmp/blehfile.  Also, is there an official freebsd kernel hackers
> guide?  Kernel programming is very interesting. ;-)

The args to open() in the kernel are expected to point to a user address,
so you have a couple of options:

a) point your in kernel vmspace at the kernel
b) copy your args into userspace using copyout and use those addresses

there's no official guide, however if you pick up a couple of non-vendor
specific OS programming textbooks you should have more fun.

please use a more descriptive subject line, using an empty subject
is likely to get your mail skipped over, also please do not send
to the list more than once if possible.

and lastly... check your damn return values, honestly! :)

-- 
-Alfred Perlstein [[EMAIL PROTECTED]]
Ok, who wrote this damn function called '??'?
And why do my programs keep crashing in it?

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

Reply via email to