tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

How to compile a modified example kernel module



Hi,
on NetBSD 6.1.5, I am failing to compile a modified version of the example found in
/usr/src/sys/module/example/

I tried to mimic the modules found in /usr/src/sys/module/
but nothing is compiling.

How I am doing things:
===================
Test the original example by
$ cp -R /usr/src/sys/module/example ~/
$ cd ~/example
$ make
$ modload ./example.kmod
And it worked.

After making the following modifications, the module stopped compiling

/*** example.c ======BEGIN=FILE====================***/
struct example_softc {
    device_t    sc_dev;
};

    static int
example_match(device_t parent, cfdata_t match, void *aux)
{
    struct pci_attach_args *pa = aux;

    printf("pci_vendor: %#x" ", pci_product: %#x"
            ", pci_class: %#x" ", pci_subclass: %#x\n",
            PCI_VENDOR(pa->pa_id), PCI_PRODUCT(pa->pa_id),
            PCI_CLASS(pa->pa_class), PCI_CLASS(pa->pa_class));

    return 0;
}

    static void
example_attach(device_t parent, device_t self, void *aux)
{
    return;
}

    static int
example_detach(device_t self, int flags)
{
    return 0;
}

CFATTACH_DECL(
        example,
        sizeof(struct example_softc),
        example_match,
        example_attach,
        example_detach,
        NULL
         );

MODULE(MODULE_CLASS_MISC, example, "pci");

#ifdef _MODULE
#include "ioconf.c"
#endif

    static int
example_modcmd(modcmd_t cmd, void *arg)
{
    int error = 0;

    switch (cmd) {
        case MODULE_CMD_INIT:
#ifdef _MODULE
            error = config_init_component(cfdriver_ioconf_example,
                    cfattach_ioconf_example, cfdata_ioconf_example);
#endif
            return error;
        case MODULE_CMD_FINI:
#ifdef _MODULE
            error = config_fini_component(cfdriver_ioconf_example,
                    cfattach_ioconf_example, cfdata_ioconf_example);
#endif
            return error;
        default:
            return ENOTTY;
    }
}
/*** example.c ======END=FILE====================***/

/*** Makefile ======BEGIN=FILE====================***/
KMOD=   example
SRCS=    example.c

.include <bsd.kmodule.mk>

/*** Makefile ======END=FILE====================***/

So, I'm asking how do I implement the example.ioconf which I'm obviously lacking ?


---mugius---


Home | Main Index | Thread Index | Old Index