rename include to lkmc

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-05-05 00:00:00 +00:00
parent 9c8f95d630
commit 1cc3ee8657
18 changed files with 56 additions and 35 deletions

View File

@@ -2608,7 +2608,7 @@ traps: ring0.out[55] general protection ip:40054c sp:7fffffffec20 error:0 in rin
Sources:
* link:kernel_modules/ring0.c[]
* link:include/ring0.h[]
* link:lkmc/ring0.h[]
* link:userland/ring0.c[]
In both cases, we attempt to run the exact same code which is shared on the `ring0.h` header file.
@@ -6425,7 +6425,7 @@ Outcome: the test passes:
Sources:
* link:kernel_modules/ioctl.c[]
* link:include/ioctl.h[]
* link:lkmc/ioctl.h[]
* link:userland/kernel_modules/ioctl.c[]
* link:rootfs_overlay/lkmc/ioctl.sh[]
@@ -6510,7 +6510,7 @@ Outcome: the test passes:
Sources:
* link:kernel_modules/anonymous_inode.c[]
* link:include/anonymous_inode.h[]
* link:lkmc/anonymous_inode.h[]
* link:userland/kernel_modules/anonymous_inode.c[]
* link:rootfs_overlay/lkmc/anonymous_inode.sh[]
@@ -6538,7 +6538,7 @@ Outcome: the test passes:
Sources:
* link:kernel_modules/netlink.c[]
* link:include/netlink.h[]
* link:lkmc/netlink.h[]
* link:userland/kernel_modules/netlink.c[]
* link:rootfs_overlay/lkmc/netlink.sh[]
@@ -13481,11 +13481,13 @@ git -C "$(./getvar buildroot_source_dir)" checkout -
=== Directory structure
==== include directory
==== lkmc directory
link:include/[] contains headers that are shared across both kernel modules and userland structures.
link:lkmc/[] contains sources and headers that are shared across kernel modules, userland and baremetal examples.
They contain data structs and magic constant for kernel to userland communication.
We chose this awkward name so that our includes will have an `lkmc/` prefix.
Another option would have been to name it as `includes/lkmc`, but that would make paths longer, and we might want to store source code in that directory as well in the future.
==== buildroot_packages directory

View File

@@ -3,6 +3,7 @@
import distutils.dir_util
import os
import platform
import shlex
import shutil
import common
@@ -80,14 +81,18 @@ Place the modules on a separate magic directory from non --host builds.
cc = '{} {}'.format(ccache, gcc)
else:
cc = gcc
if self.env['verbose']:
verbose = ['V=1']
else:
verbose = []
if self.env['host']:
linux_dir = os.path.join('/lib', 'modules', platform.uname().release, 'build')
else:
linux_dir = self.env['linux_build_dir']
ccflags = [
'-I', self.env['root_dir'], LF,
]
make_args_extra = []
if self.env['verbose']:
make_args_extra.extend(['V=1', LF])
if self.env['force_rebuild']:
make_args_extra.extend(['-B', LF])
self.sh.run_cmd(
(
[
@@ -95,13 +100,14 @@ Place the modules on a separate magic directory from non --host builds.
'-j', str(self.env['nproc']), LF,
'ARCH={}'.format(self.env['linux_arch']), LF,
'CC={}'.format(cc), LF,
'CCFLAGS={}'.format(self.sh.cmd_to_string(ccflags)), LF,
'CROSS_COMPILE={}'.format(prefix), LF,
'LINUX_DIR={}'.format(linux_dir), LF,
'M={}'.format(build_subdir), LF,
'OBJECT_FILES={}'.format(' '.join(object_files)), LF,
] +
self.sh.shlex_split(self.env['make_args']) +
verbose
make_args_extra +
self.sh.shlex_split(self.env['make_args'])
),
cwd=os.path.join(self.env['kernel_modules_build_subdir']),
)

View File

@@ -57,7 +57,7 @@ consts['userland_subdir'] = 'userland'
consts['userland_source_dir'] = os.path.join(consts['root_dir'], consts['userland_subdir'])
consts['userland_source_arch_dir'] = os.path.join(consts['userland_source_dir'], 'arch')
consts['userland_build_ext'] = '.out'
consts['include_subdir'] = 'include'
consts['include_subdir'] = 'lkmc'
consts['include_source_dir'] = os.path.join(consts['root_dir'], consts['include_subdir'])
consts['submodules_dir'] = os.path.join(consts['root_dir'], 'submodules')
consts['buildroot_source_dir'] = os.path.join(consts['submodules_dir'], 'buildroot')

View File

@@ -1 +0,0 @@
https://github.com/cirosantilli/linux-kernel-module-cheat#include-directory

View File

@@ -1,15 +1,17 @@
ifeq ($(OBJECT_FILES),)
# Hardcoding LKMC_MODULE_SUBDIRS here because is not defined.
obj-m += $(addsuffix .o, $(notdir $(basename $(filter-out %.mod.c, $(wildcard $(BR2_EXTERNAL_LKMC_PATH)/kernel_modules/*.c)))))
else
# Trying to do:
# $(MAKE) -C '$(LINUX_DIR)' M='$(M)' hello.ko hello2.ko
# to restrict which modules are built leads to failures
# when doing parallel builds. The only solution I could find
# was to let the host select obj-m itself.
obj-m += $(OBJECT_FILES)
endif
ccflags-y := -DDEBUG -g -std=gnu99 -Werror -Wno-declaration-after-statement -Wframe-larger-than=1000000000
ccflags-y := \
-DDEBUG \
-ggdb3 \
-std=gnu99 \
-Werror \
-Wframe-larger-than=1000000000 \
-Wno-declaration-after-statement \
$(CCFLAGS)
.PHONY: all

View File

@@ -9,7 +9,7 @@
#include <linux/printk.h> /* printk */
#include <linux/uaccess.h> /* copy_from_user */
#include "../include/anonymous_inode.h"
#include <lkmc/anonymous_inode.h>
static struct dentry *debugfs_file;
static u32 myval = 1;

View File

@@ -5,7 +5,7 @@
#include <linux/printk.h> /* printk */
#include <linux/uaccess.h> /* copy_from_user, copy_to_user */
#include "../include/ioctl.h"
#include <lkmc/ioctl.h>
static struct dentry *debugfs_file;

View File

@@ -6,7 +6,7 @@
#include <linux/skbuff.h>
#include <net/sock.h>
#include "../include/netlink.h"
#include <lkmc/netlink.h>
struct sock *nl_sk = NULL;

View File

@@ -3,7 +3,7 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include "../include/ring0.h"
#include <lkmc/ring0.h>
static int myinit(void)
{

1
lkmc/README.adoc Normal file
View File

@@ -0,0 +1 @@
https://github.com/cirosantilli/linux-kernel-module-cheat#lkmc-directory

View File

@@ -1,5 +1,7 @@
#ifndef IOCTL_H
#define IOCTL_H
/* https://github.com/cirosantilli/linux-kernel-module-cheat#anonymous-inode */
#ifndef LKMC_ANONYMOUS_INODE_H
#define LKMC_ANONYMOUS_INODE_H
#include <linux/ioctl.h>

View File

@@ -1,5 +1,7 @@
#ifndef IOCTL_H
#define IOCTL_H
/* https://github.com/cirosantilli/linux-kernel-module-cheat#ioctl */
#ifndef LKMC_IOCTL_H
#define LKMC_IOCTL_H
#include <linux/ioctl.h>

View File

@@ -1,5 +1,7 @@
#ifndef NETLINK_H
#define NETLINK_H
/* https://github.com/cirosantilli/linux-kernel-module-cheat#netlink-sockets */
#ifndef LKMC_NETLINK_H
#define LKMC_NETLINK_H
/* Socket identifier, matches userland. TODO can be anything?
* Is there a more scalable way to do it? E.g. ioctl device,

View File

@@ -1,3 +1,8 @@
/* https://github.com/cirosantilli/linux-kernel-module-cheat#ring0 */
#ifndef LKMC_RING0_H
#define LKMC_RING0_H
#if defined(__x86_64__) || defined(__i386__)
#ifdef THIS_MODULE

View File

@@ -3,7 +3,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <include/ring0.h>
#include <lkmc/ring0.h>
int main(void) {
LkmcRing0Regs ring0_regs;

View File

@@ -10,7 +10,7 @@
#include <sys/types.h>
#include <unistd.h> /* sleep */
#include <include/anonymous_inode.h>
#include <lkmc/anonymous_inode.h>
int main(int argc, char **argv) {
char buf[1024];

View File

@@ -10,7 +10,7 @@
#include <sys/types.h>
#include <unistd.h>
#include <include/ioctl.h>
#include <lkmc/ioctl.h>
int main(int argc, char **argv) {
char *ioctl_path;

View File

@@ -7,7 +7,7 @@
#include <sys/socket.h>
#include <unistd.h>
#include <include/netlink.h>
#include <lkmc/netlink.h>
#define MAX_PAYLOAD 1024