mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 08:42:43 +00:00 
			
		
		
		
	 3e1ed38d4b
			
		
	
	
		3e1ed38d4b
		
	
	
	
	
		
			
			ENOENT means "no such file or directory", not "no such symbol". Return EINVAL instead, as we already do in other cases.
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			1,007 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1,007 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ## Name
 | |
| 
 | |
| module\_load - load a kernel module
 | |
| 
 | |
| ## Synopsis
 | |
| 
 | |
| ```**c++
 | |
| #include <serenity.h>
 | |
| 
 | |
| int module_load(const char* path, size_t path_length);
 | |
| ```
 | |
| 
 | |
| ## Description
 | |
| 
 | |
| `module_load()` will load a kernel module from an ELF object file given its
 | |
| path in the filesystem.
 | |
| 
 | |
| ## Return value
 | |
| 
 | |
| If the module is successfully loaded, `module_load()` returns 0. Otherwise, it
 | |
| returns -1 and sets `errno` to describe the error.
 | |
| 
 | |
| ## Errors
 | |
| 
 | |
| * `EPERM`: The calling process does not have superuser permissions.
 | |
| * `EFAULT`: `path` pointed to memory that was not accessible for the caller.
 | |
| * `ENOEXEC`: The specified file could not be parsed as an ELF object.
 | |
| * `EINVAL`: One or more symbols referred to by the module could not be resolved, or the module had no `.text` section, or didn't export a `module_init` function.
 | |
| * `EEXIST`: A module with the same name was already loaded.
 | |
| 
 | |
| ## See also
 | |
| 
 | |
| * [`module_unload`(2)](module_unload.md)
 | |
| * [`modload`(1)](../man1/modload.md)
 | |
| * [`kernel_modules`(7)](../man7/kernel_modules.md)
 |