Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Aug 2005 11:22:38 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        Sergey Uvarov <uvarovsl@mail.pnpi.spb.ru>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: preferable way to control kernel module
Message-ID:  <200508111122.39336.jhb@FreeBSD.org>
In-Reply-To: <42FA76B4.8010007@mail.pnpi.spb.ru>
References:  <42FA63A3.4040802@mail.pnpi.spb.ru> <200508101737.36542.jhb@FreeBSD.org> <42FA76B4.8010007@mail.pnpi.spb.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 10 August 2005 05:50 pm, Sergey Uvarov wrote:
> >>>>I'm writing a kernel module for my own needs. AFAIK the following
> >>>>methods could be used:
> >>>>
> >>>>1) allocate not used system call with help of SYSCALL_MODULE macro
> >>>>
> >>>>2) allocate proprieatry oid via SYSCTL_OID(OID_AUTO) and write an
> >>>>appropriate sysctl handler(s)
> >>>>
> >>>>3) add a file in /dev and use ioctl(2) call
> >>>>
> >>>>What is a preferable way to control my module?
> >>>
> >>>It depends on what you want to do really.  I've used sysctl's for simple
> >>>debug modules where I write to the sysctl to have it perform a desired
> >>>action.
> >>
> >>I need to pass some configuration parameters to my module and retrieve a
> >>status back. Interface is quite similar to ptrace(2) syscall. I don't
> >>need to pass large amount of data.
> >
> > If it's a single integer or some such, I'd say use sysctl.  If it's a
> > structure, I'd go the ioctl(2) route.  Creating /dev entries isn't all
> > that hard.  In your case you'd just need open/close/ioctl in a cdevsw,
> > then use make_dev() during MOD_LOAD and destroy_dev() during MOD_UNLOAD.
>
> Thank you for advise. But I wonder: what is wrong with syscall approach
> (via SYSCALL_MODULE macro)?

I just haven't done one personally.  I think there's also a lot more potential 
for collisions when trying to pick a syscall number versus picking a string 
name for a sysctl or /dev entry.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508111122.39336.jhb>