| .\" Copyright (C) 1996 Free Software Foundation, Inc. |
| .\" |
| .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) |
| .\" This file is distributed according to the GNU General Public License. |
| .\" %%%LICENSE_END |
| .\" |
| .\" 2006-02-09, some reformatting by Luc Van Oostenryck; some |
| .\" reformatting and rewordings by mtk |
| .\" |
| .TH CREATE_MODULE 2 2021-03-22 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| create_module \- create a loadable module entry |
| .SH SYNOPSIS |
| .nf |
| .B #include <linux/module.h> |
| .PP |
| .BI "caddr_t create_module(const char *" name ", size_t " size ); |
| .fi |
| .PP |
| .IR Note : |
| No declaration of this system call is provided in glibc headers; see NOTES. |
| .SH DESCRIPTION |
| .IR Note : |
| This system call is present only in kernels before Linux 2.6. |
| .PP |
| .BR create_module () |
| attempts to create a loadable module entry and reserve the kernel memory |
| that will be needed to hold the module. |
| This system call requires privilege. |
| .SH RETURN VALUE |
| On success, returns the kernel address at which the module will reside. |
| On error, \-1 is returned and |
| .I errno |
| is set to indicate the error. |
| .SH ERRORS |
| .TP |
| .B EEXIST |
| A module by that name already exists. |
| .TP |
| .B EFAULT |
| .I name |
| is outside the program's accessible address space. |
| .TP |
| .B EINVAL |
| The requested size is too small even for the module header information. |
| .TP |
| .B ENOMEM |
| The kernel could not allocate a contiguous block of memory large |
| enough for the module. |
| .TP |
| .B ENOSYS |
| .BR create_module () |
| is not supported in this version of the kernel |
| (e.g., the kernel is version 2.6 or later). |
| .TP |
| .B EPERM |
| The caller was not privileged |
| (did not have the |
| .B CAP_SYS_MODULE |
| capability). |
| .SH VERSIONS |
| This system call is present on Linux only up until kernel 2.4; |
| it was removed in Linux 2.6. |
| .\" Removed in Linux 2.5.48 |
| .SH CONFORMING TO |
| .BR create_module () |
| is Linux-specific. |
| .SH NOTES |
| This obsolete system call is not supported by glibc. |
| No declaration is provided in glibc headers, but, through a quirk of history, |
| glibc versions before 2.23 did export an ABI for this system call. |
| Therefore, in order to employ this system call, |
| it was sufficient to manually declare the interface in your code; |
| alternatively, you could invoke the system call using |
| .BR syscall (2). |
| .SH SEE ALSO |
| .BR delete_module (2), |
| .BR init_module (2), |
| .BR query_module (2) |