April 2012
Intermediate to advanced
352 pages
8h
English
Now that you know how to create sysctls during runtime, let’s do some actual device control (as opposed to quoting Monty Python).
Example 3-4 is a revision of Example 3-1 that employs a sysctl to resize the memory buffer.
To save space, the functions echo_open, echo_close, echo_write, and echo_read aren’t listed here, as they haven’t been changed.
Example 3-4. echo-4.0.c
#include <sys/param.h> #include <sys/module.h> #include <sys/kernel.h> #include <sys/systm.h> #include <sys/conf.h> #include <sys/uio.h> #include <sys/malloc.h> #include <sys/ioccom.h> #include <sys/sysctl.h> MALLOC_DEFINE(M_ECHO, "echo_buffer", "buffer for echo driver"); #define ECHO_CLEAR_BUFFER _IO('E', 1) static d_open_t echo_open; static d_close_t ...