From owner-freebsd-hackers@FreeBSD.ORG Thu Aug 11 15:35:57 2005 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D7A3016A422 for ; Thu, 11 Aug 2005 15:35:57 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: from mv.twc.weather.com (mv.twc.weather.com [65.212.71.225]) by mx1.FreeBSD.org (Postfix) with ESMTP id 60BBE43D45 for ; Thu, 11 Aug 2005 15:35:57 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: from [10.50.40.201] (Not Verified[65.202.103.25]) by mv.twc.weather.com with NetIQ MailMarshal (v6, 0, 3, 8) id ; Thu, 11 Aug 2005 11:50:47 -0400 From: John Baldwin To: Sergey Uvarov Date: Thu, 11 Aug 2005 11:22:38 -0400 User-Agent: KMail/1.8 References: <42FA63A3.4040802@mail.pnpi.spb.ru> <200508101737.36542.jhb@FreeBSD.org> <42FA76B4.8010007@mail.pnpi.spb.ru> In-Reply-To: <42FA76B4.8010007@mail.pnpi.spb.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200508111122.39336.jhb@FreeBSD.org> Cc: freebsd-hackers@freebsd.org Subject: Re: preferable way to control kernel module X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Aug 2005 15:35:58 -0000 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 <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org