Asistence with sysctl proc's handle in kernel space
- Reply: John Baldwin : "Re: Asistence with sysctl proc's handle in kernel space"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 10 Jul 2024 21:04:49 UTC
I am following FreeBSD drivers: A guide for the intrepid by Joseph Kong to learn to write FreeBSD device drivers. I got to the sysctl subchapter where is more or less this code #include <sys/param.h> #include <sys/sysctl.h> .... static int sysctl_set_buffer_size(SYSCTL_HANDLER_ARGS) { int error = 0; int size = echo_message->buffer_size; error = sysctl_handle_int(oidp, &size, 0, req); if (error || !req->newptr || echo_message->buffer_size == size) return (error); if (size >= 128 && size <= 512) { echo_message->buffer = realloc(echo_message->buffer, size, M_ECHO, M_WAITOK); echo_message->buffer_size = size; if (echo_message->length >= size) { echo_message->length = size - 1; echo_message->buffer[size - 1] = '\0'; } } else { error = EINVAL; } return (error); } but when compiling I got the error: error: call to undeclared function 'sysctl_int_handle'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function- declaration] 167 | error = sysctl_int_handle(oidp, &size, 0, req); instead of compiling. Which gets me to the point how are I supposed to get the value that the user is trying to set with the sysctl utility, as well as report back the current value, if had been a change, and if so the new value?