How to make my new driver be configurable in the kernel configuration file?

Yong Ma mayong at mail.com
Wed Nov 16 16:03:42 GMT 2005


----- Original Message -----
From: "Warner Losh" <imp at bsdimp.com>
To: jhb at freebsd.org
Subject: Re: How to make my new driver be configurable in the kernel configuration file?
Date: Tue, 15 Nov 2005 09:19:09 -0700 (MST)

> 
> From: John Baldwin <jhb at freebsd.org>
> Subject: Re: How to make my new driver be configurable in the 
> kernel configuration file?
> Date: Tue, 15 Nov 2005 10:21:59 -0500
> 
> > On Tuesday 15 November 2005 03:59 am, Yong Ma wrote:
> > > Hi all,
> > > I wrote and debuged my driver for a new device in KLD mode,now I want to
> > > plug it into the kernel,so that it can be loaded when the system  boots,and
> > > make it be configurable in the kernel configuration file like other device
> > > driver as "device XXX",I don't know what to do,could anyone be kind to help
> > > me?
> >
> > To add your driver you update the src/sys/conf/files* files.  If 
> > your driver is machine independent, you can add it to 
> > src/sys/conf/files.  For example, here are the lines in 
> > sys/conf/files for the cy(4) driver:
> >
> > dev/cy/cy.c                     optional cy
> > dev/cy/cy_isa.c                 optional cy isa
> > dev/cy/cy_pci.c                 optional cy pci
> >
> > If your driver only works on a single architecture (such as i386) 
> > then add it to the architecture file sys/conf/files.<arch> (e.g. 
> > sys/conf/files.i386).  The device names after 'optional' specify 
> > which devices must be enabled in the kernel config for that file 
> > to be included.  Thus, in the example above, src/sys/dev/cy/cy.c 
> > is included as long as 'device cy' is in the kernel, but 
> > src/sys/dev/cy/cy_isa.c is only included if both 'device cy' and 
> > 'device isa' are in the kernel config file.
> 
> You can augment the system files with the files directive if you don't
> want to edit sys/conf/files.foo:
> 
> files "/foo/bar/baz"
> 
> and put something like the above in that.
> 
> Warner
> 
> _______________________________________________
> freebsd-drivers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
> To unsubscribe, send any mail to "freebsd-drivers-unsubscribe at freebsd.org"

Thank you! I did as that but came across some problems,these are the 
jobs and the errors:

  1) I copyed the files to the sys/dev/mydevice and added 
"dev/mydevice/mydevice.c   optinonal mydevice" in the file 
/usr/src/sys/conf/files.i386,and added a line "device mydevice" in 
the sys/i386/conf/MYKERNEL(a copy of GENERIC),but met a error when 
config MYKERNEL:syntax error (the line I just added).

  2) Then,I modified line in files.i386 as "dev/mydevice/mydevice.c   
standard",configed successfully,but another error occured when make 
depend(make buildkernel KERNCONF=MYKERNEL the same):
      ...
      ../../../dev/mydevice/mydevice.c:27:20: mydevice.h: No such 
file or directory
      ../../../dev/mydevice/mydevice.c:28:44: mydevicekern.h: No such 
file or directory
      ../../../dev/mydevice/mydevice.c:29:49: mydeviceioctl.h: No 
such file or directory
      mkdep: compile failed
      *** Error code 1
      ...
and the source code of mydevice.c is as follows:
       ...
       #include "sjy22b.h"
       #include "sjy22bkern.h"
       #include "sjy22bioctl.h"
       ...
the three headers are just in the sys/dev/mydevice directory,I don't 
know why this happened.
Need your suggestion!

Thanks
Yong

-- 
___________________________________________________
Play 100s of games for FREE! http://games.mail.com/



More information about the freebsd-hackers mailing list