C 从linux驱动程序中执行二进制文件

C 从linux驱动程序中执行二进制文件,c,linux-kernel,executable,syslog,udev,C,Linux Kernel,Executable,Syslog,Udev,在usb driver.c文件中执行以下行后,我想执行一个可执行文件: 在widows中,我们有像system这样的调用,可以用来调用和执行二进制文件。所以我希望Linux中也有类似的选项 我的日志消息如下所示,我已经提到了我希望在何处执行二进制文件: [Mon May 12 18:33:00.027 2014] [Mon May 12 18:33:00.027 2014] U-Boot SPL 2014.01 (May 12 2014 - 16:08:58)

在usb driver.c文件中执行以下行后,我想执行一个可执行文件:

在widows中,我们有像
system
这样的调用,可以用来调用和执行二进制文件。所以我希望Linux中也有类似的选项

我的日志消息如下所示,我已经提到了我希望在何处执行二进制文件:

        [Mon May 12 18:33:00.027 2014] 
        [Mon May 12 18:33:00.027 2014] U-Boot SPL 2014.01 (May 12 2014 - 16:08:58)
        [Mon May 12 18:33:00.027 2014] mmc boot
        [Mon May 12 18:33:00.074 2014] reading fpga.bin
        [Mon May 12 18:33:00.308 2014] zynq_align_dma_buffer: Bitstream is not swapped(1) - swap it
        [Mon May 12 18:33:00.573 2014] reading system.dtb
        [Mon May 12 18:33:00.589 2014] spl: error reading image system.dtb, err - -1
        [Mon May 12 18:33:00.589 2014] reading u-boot.img
        [Mon May 12 18:33:00.589 2014] reading u-boot.img
        [Mon May 12 18:33:00.651 2014] 
        [Mon May 12 18:33:00.651 2014] 
        [Mon May 12 18:33:00.651 2014] U-Boot 2014.01 (May 12 2014 - 16:08:58)
        [Mon May 12 18:33:00.651 2014] 
        [Mon May 12 18:33:00.651 2014] I2C:   ready
        [Mon May 12 18:33:00.651 2014] Memory: ECC disabled
        [Mon May 12 18:33:00.651 2014] DRAM:  1 GiB
        [Mon May 12 18:33:00.667 2014] MMC:   zynq_sdhci: 0
        [Mon May 12 18:33:00.667 2014] Using default environment
        [Mon May 12 18:33:00.667 2014] 
        [Mon May 12 18:33:00.667 2014] In:    serial
        [Mon May 12 18:33:00.667 2014] Out:   serial
        [Mon May 12 18:33:00.667 2014] Err:   serial
        [Mon May 12 18:33:00.667 2014] Net:   Gem.e000b000
        [Mon May 12 18:33:00.667 2014] 
        [Mon May 12 18:33:00.729 2014] Device: zynq_sdhci
        [Mon May 12 18:33:00.729 2014] Manufacturer ID: 2
        [Mon May 12 18:33:00.729 2014] OEM: 544d
        [Mon May 12 18:33:00.729 2014] Name: SA02G 
        [Mon May 12 18:33:00.729 2014] Tran Speed: 50000000
        [Mon May 12 18:33:00.729 2014] Rd Block Len: 512
        [Mon May 12 18:33:00.729 2014] SD version 3.0
        [Mon May 12 18:33:00.729 2014] High Capacity: No
        [Mon May 12 18:33:00.729 2014] Capacity: 1.8 GiB
        [Mon May 12 18:33:00.729 2014] Bus Width: 4-bit
        [Mon May 12 18:33:00.729 2014] reading uEnv.txt
        [Mon May 12 18:33:00.745 2014] ** Unable to read file uEnv.txt **
        [Mon May 12 18:33:00.745 2014] Copying Linux from SD to RAM...
        [Mon May 12 18:33:00.745 2014] reading uImage
        [Mon May 12 18:33:01.073 2014] 3588280 bytes read in 322 ms (10.6 MiB/s)
        [Mon May 12 18:33:01.073 2014] reading devicetree.dtb
        [Mon May 12 18:33:01.088 2014] 6804 bytes read in 19 ms (349.6 KiB/s)
        [Mon May 12 18:33:01.104 2014] reading uramdisk.image.gz
        [Mon May 12 18:33:01.603 2014] 5310018 bytes read in 470 ms (10.8 MiB/s)
        [Mon May 12 18:33:01.603 2014] ## Booting kernel from Legacy Image at 03000000 ...
        [Mon May 12 18:33:01.603 2014]    Image Name:   Linux-3.13.0-xilinx-dirty
        [Mon May 12 18:33:01.603 2014]    Image Type:   ARM Linux Kernel Image (uncompressed)
        [Mon May 12 18:33:01.603 2014]    Data Size:    3588216 Bytes = 3.4 MiB
        [Mon May 12 18:33:01.603 2014]    Load Address: 00008000
        [Mon May 12 18:33:01.603 2014]    Entry Point:  00008000
        [Mon May 12 18:33:01.603 2014]    Verifying Checksum ... OK
        [Mon May 12 18:33:01.665 2014] ## Loading init Ramdisk from Legacy Image at 02000000 ...
        [Mon May 12 18:33:01.665 2014]    Image Name:   
        [Mon May 12 18:33:01.665 2014]    Image Type:   ARM Linux RAMDisk Image (gzip compressed)
        [Mon May 12 18:33:01.665 2014]    Data Size:    5309954 Bytes = 5.1 MiB
        [Mon May 12 18:33:01.665 2014]    Load Address: 00000000
        [Mon May 12 18:33:01.665 2014]    Entry Point:  00000000
        [Mon May 12 18:33:01.665 2014]    Verifying Checksum ... OK
        [Mon May 12 18:33:01.743 2014] ## Flattened Device Tree blob at 02a00000
        [Mon May 12 18:33:01.743 2014]    Booting using the fdt blob at 0x2a00000
        [Mon May 12 18:33:01.743 2014]    Loading Kernel Image ... OK
        [Mon May 12 18:33:01.790 2014]    Loading Ramdisk to 1faef000, end 1ffff602 ... OK
        [Mon May 12 18:33:01.821 2014]    Loading Device Tree to 1faea000, end 1faeea93 ... OK
        [Mon May 12 18:33:01.821 2014] 
        [Mon May 12 18:33:01.821 2014] Starting kernel ...
        [Mon May 12 18:33:01.821 2014] 
        [Mon May 12 18:33:01.837 2014] Uncompressing Linux... done, booting the kernel.
        [Mon May 12 18:33:02.165 2014] [    0.000000] Booting Linux on physical CPU 0x0
        [Mon May 12 18:33:02.165 2014] [    0.000000] Linux version 3.13.0-xilinx-dirty (root@zaidi) (gcc version 4.7.3 (Sourcery CodeBench Lite 2013.05-40) ) #1 SMP PREEMPT Mon May 12 16:37:39 IST 2014
        [Mon May 12 18:33:02.165 2014] [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
        [Mon May 12 18:33:02.165 2014] [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
        [Mon May 12 18:33:02.165 2014] [    0.000000] Machine model: Xilinx Zynq
        [Mon May 12 18:33:02.165 2014] [    0.000000] bootconsole [earlycon0] enabled
        [Mon May 12 18:33:02.165 2014] [    0.000000] Memory policy: Data cache writealloc
        [Mon May 12 18:33:02.274 2014] [    0.000000] PERCPU: Embedded 8 pages/cpu @c143f000 s10688 r8192 d13888 u32768
        [Mon May 12 18:33:02.274 2014] [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260624
        [Mon May 12 18:33:02.274 2014] [    0.000000] Kernel command line: console=ttyPS0,115200n8 root=/dev/ram rw initrd=0x00800000,16M earlyprintk mtdparts=physmap-flash.0:512K(nor-fsbl),512K(nor-u-boot),5M(nor-linux),9M(nor-user),1M(nor-scratch),-(nor-rootfs)
        [Mon May 12 18:33:02.274 2014] [    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
        [Mon May 12 18:33:02.289 2014] [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
        [Mon May 12 18:33:02.289 2014] [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
        [Mon May 12 18:33:02.508 2014] [    0.000000] Memory: 1021760K/1048576K available (4857K kernel code, 310K rwdata, 1708K rodata, 198K init, 5345K bss, 26816K reserved, 270336K highmem)
        [Mon May 12 18:33:02.508 2014] [    0.000000] Virtual kernel memory layout:
        [Mon May 12 18:33:02.508 2014] [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
        [Mon May 12 18:33:02.508 2014] [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
        [Mon May 12 18:33:02.508 2014] [    0.000000]     vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
        [Mon May 12 18:33:02.508 2014] [    0.000000]     lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
        [Mon May 12 18:33:02.508 2014] [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
        [Mon May 12 18:33:02.523 2014] [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
        [Mon May 12 18:33:02.523 2014] [    0.000000]       .text : 0xc0008000 - 0xc0671828   (6567 kB)
        [Mon May 12 18:33:02.523 2014] [    0.000000]       .init : 0xc0672000 - 0xc06a39c0   ( 199 kB)
        [Mon May 12 18:33:02.523 2014] [    0.000000]       .data : 0xc06a4000 - 0xc06f1ad0   ( 311 kB)
        [Mon May 12 18:33:02.523 2014] [    0.000000]        .bss : 0xc06f1adc - 0xc0c2a1b0   (5346 kB)
        [Mon May 12 18:33:02.555 2014] [    0.000000] Preemptible hierarchical RCU implementation.
        [Mon May 12 18:33:02.555 2014] [    0.000000]     RCU lockdep checking is enabled.
        [Mon May 12 18:33:02.555 2014] [    0.000000]     Dump stacks of tasks blocking RCU-preempt GP.
        [Mon May 12 18:33:02.555 2014] [    0.000000]     RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
        [Mon May 12 18:33:02.555 2014] [    0.000000] NR_IRQS:16 nr_irqs:16 16
        [Mon May 12 18:33:02.570 2014] [    0.000000] ps7-slcr mapped to f0004000
        [Mon May 12 18:33:02.570 2014] [    0.000000] zynq_clock_init: clkc starts at f0004100
        [Mon May 12 18:33:02.570 2014] [    0.000000] Zynq clock init
        [Mon May 12 18:33:02.586 2014] [    0.000000] sched_clock: 32 bits at 333MHz, resolution 3ns, wraps every 12884901885ns
        [Mon May 12 18:33:02.586 2014] [    0.000000] ps7-ttc #0 at f0006000, irq=43
        [Mon May 12 18:33:02.601 2014] [    0.000000] Console: colour dummy device 80x30
        [Mon May 12 18:33:02.601 2014] [    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
        [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
        [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCK_DEPTH:          48
        [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_KEYS:        8191
        [Mon May 12 18:33:02.648 2014] [    0.000000] ... CLASSHASH_SIZE:          4096
        [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_ENTRIES:     16384
        [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_CHAINS:      32768
        [Mon May 12 18:33:02.648 2014] [    0.000000] ... CHAINHASH_SIZE:          16384
        [Mon May 12 18:33:02.648 2014] [    0.000000]  memory used by lock dependency info: 3695 kB
        [Mon May 12 18:33:02.648 2014] [    0.000000]  per task-struct memory footprint: 1152 bytes
        [Mon May 12 18:33:02.648 2014] [   12.877213] Calibrating delay loop... 1325.46 BogoMIPS (lpj=6627328)
        [Mon May 12 18:33:02.679 2014] [   12.877220] pid_max: default: 32768 minimum: 301
        [Mon May 12 18:33:02.695 2014] [   12.877221] Mount-cache hash table entries: 512
        [Mon May 12 18:33:02.711 2014] [   12.877223] CPU: Testing write buffer coherency: ok
        [Mon May 12 18:33:02.711 2014] [   12.877224] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
        [Mon May 12 18:33:02.711 2014] [   12.877225] Setting up static identity map for 0x49ad18 - 0x49ad70
        [Mon May 12 18:33:02.726 2014] [   12.877226] L310 cache controller enabled
        [Mon May 12 18:33:02.726 2014] [   12.877227] l2x0: 8 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x72460000, Cache size: 512 kB
        [Mon May 12 18:33:02.929 2014] [   12.877242] CPU1: Booted secondary processor
        [Mon May 12 18:33:02.929 2014] [   12.877256] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
        [Mon May 12 18:33:02.929 2014] [   12.877256] Brought up 2 CPUs
        [Mon May 12 18:33:02.929 2014] [   12.877258] SMP: Total of 2 processors activated.
        [Mon May 12 18:33:02.929 2014] [   12.877259] CPU: All CPU(s) started in SVC mode.
        [Mon May 12 18:33:02.929 2014] [   12.877260] devtmpfs: initialized
        [Mon May 12 18:33:02.945 2014] [   12.877262] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
        [Mon May 12 18:33:02.960 2014] [   12.877264] regulator-dummy: no parameters
        [Mon May 12 18:33:02.960 2014] [   12.877265] NET: Registered protocol family 16
        [Mon May 12 18:33:02.960 2014] [   12.877266] DMA: preallocated 256 KiB pool for atomic coherent allocations
        [Mon May 12 18:33:02.976 2014] [   12.877268] cpuidle: using governor ladder
        [Mon May 12 18:33:02.976 2014] [   12.877269] cpuidle: using governor menu
        [Mon May 12 18:33:03.007 2014] [   12.877273] syscon f8000000.ps7-slcr: regmap [mem 0xf8000000-0xf8000fff] registered
        [Mon May 12 18:33:03.023 2014] [   12.877274] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
        [Mon May 12 18:33:03.023 2014] [   12.877276] hw-breakpoint: maximum watchpoint size is 4 bytes.
        [Mon May 12 18:33:03.038 2014] [   12.877277] zynq-ocm f800c000.ps7-ocmc: ZYNQ OCM pool: 256 KiB @ 0xf0080000
        [Mon May 12 18:33:03.085 2014] [   12.877287] bio: create slab <bio-0> at 0
        [Mon May 12 18:33:03.101 2014] [   12.877288] vgaarb: loaded
        [Mon May 12 18:33:03.101 2014] [   12.877289] SCSI subsystem initialized



        [Mon May 12 18:33:03.116 2014] [   12.877290] usbcore: registered new interface driver usbfs
        [Mon May 12 18:33:03.116 2014] [   12.877291] usbcore: registered new interface driver hub
        [Mon May 12 18:33:03.116 2014] [   12.877291] usbcore: registered new device driver usb



    /**************************** EXECUTE BINARY HERE ************************/

    /**************************** EXECUTE BINARY HERE ************************/

    /**************************** EXECUTE BINARY HERE ************************/

    /**************************** EXECUTE BINARY HERE ************************/

        [Mon May 12 18:33:03.132 2014] [   12.877293] media: Linux media interface: v0.10
        [Mon May 12 18:33:03.132 2014] [   12.877293] Linux video capture interface: v2.00
        [Mon May 12 18:33:03.147 2014] [   12.877294] pps_core: LinuxPPS API ver. 1 registered
        [Mon May 12 18:33:03.147 2014] [   12.877295] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
        [Mon May 12 18:33:03.147 2014] [   12.877297] PTP clock support registered
        [Mon May 12 18:33:03.163 2014] [   12.877297] EDAC MC: Ver: 3.0.0
        [Mon May 12 18:33:03.179 2014] [   12.877300] DMA-API: preallocated 4096 debug entries
        [Mon May 12 18:33:03.179 2014] [   12.877301] DMA-API: debugging enabled by kernel config
        [Mon May 12 18:33:03.179 2014] [   12.877301] Switched to clocksource arm_global_timer
        [Mon May 12 18:33:03.241 2014] [   12.877310] NET: Registered protocol family 2
        [Mon May 12 18:33:03.241 2014] [   12.877311] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
        [Mon May 12 18:33:03.257 2014] [   12.877313] TCP bind hash table entries: 8192 (order: 6, 294912 bytes)
        [Mon May 12 18:33:03.257 2014] [   12.877314] TCP: Hash tables configured (established 8192 bind 8192)
        [Mon May 12 18:33:03.272 2014] [   12.877315] TCP: reno registered
        [Mon May 12 18:33:03.272 2014] [   12.877316] UDP hash table entries: 512 (order: 3, 40960 bytes)
        [Mon May 12 18:33:03.288 2014] [   12.877317] UDP-Lite hash table entries: 512 (order: 3, 40960 bytes)
        [Mon May 12 18:33:03.288 2014] [   12.877318] NET: Registered protocol family 1
        [Mon May 12 18:33:03.319 2014] [   12.877319] RPC: Registered named UNIX socket transport module.
        [Mon May 12 18:33:03.319 2014] [   12.877320] RPC: Registered udp transport module.
        [Mon May 12 18:33:03.319 2014] [   12.877321] RPC: Registered tcp transport module.
        [Mon May 12 18:33:03.319 2014] [   12.877322] RPC: Registered tcp NFSv4.1 backchannel transport module.
        [Mon May 12 18:33:03.319 2014] [   12.877323] Trying to unpack rootfs image as initramfs...
        [Mon May 12 18:33:03.319 2014] [   12.877324] rootfs image is not initramfs (no cpio magic); looks like an initrd
        [Mon May 12 18:33:03.366 2014] [   12.877331] Freeing initrd memory: 5184K (dfaef000 - dffff000)
        [Mon May 12 18:33:03.381 2014] [   12.877332] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
        [Mon May 12 18:33:03.397 2014] [   12.877335] bounce pool size: 64 pages
        [Mon May 12 18:33:03.397 2014] [   12.877336] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
        [Mon May 12 18:33:03.413 2014] [   12.877338] msgmni has been set to 1477
        [Mon May 12 18:33:03.428 2014] [   12.877339] io scheduler noop registered
        [Mon May 12 18:33:03.428 2014] [   12.877339] io scheduler deadline registered
        [Mon May 12 18:33:03.428 2014] [   12.877340] io scheduler cfq registered (default)
        [Mon May 12 18:33:03.459 2014] [   12.877343] dma-pl330 f8003000.ps7-dma: unable to set the seg size
        [Mon May 12 18:33:03.459 2014] [   12.877344] dma-pl330 f8003000.ps7-dma: Loaded driver for PL330 DMAC-2364208
        [Mon May 12 18:33:03.459 2014] [   12.877345] dma-pl330 f8003000.ps7-dma:     DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
        [Mon May 12 18:33:03.475 2014] [   12.877347] e0001000.serial: ttyPS1 at MMIO 0xe0001000 (irq = 82, base_baud = 3124999) is a xuartps
        [Mon May 12 18:33:03.475 2014] [   12.877349] xdevcfg f8007000.ps7-dev-cfg: ioremap 0xf8007000 to f0068000
        [Mon May 12 18:33:03.506 2014] [   12.877355] brd: module loaded
        [Mon May 12 18:33:03.522 2014] [   12.877358] loop: module loaded
        [Mon May 12 18:33:03.553 2014] [   12.877360] zynq-qspi e000d000.ps7-qspi: master is unqueued, this is deprecated
        [Mon May 12 18:33:03.553 2014] [   12.877361] zynq-qspi e000d000.ps7-qspi: at 0xE000D000 mapped to 0xF006A000, irq=51
        [Mon May 12 18:33:03.569 2014] [   12.877364] e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
        [Mon May 12 18:33:03.569 2014] [   12.877365] e1000e: Copyright(c) 1999 - 2013 Intel Corporation.
        [Mon May 12 18:33:03.584 2014] [   12.877366] libphy: XEMACPS mii bus: probed
        [Mon May 12 18:33:03.600 2014] [   12.877367] mdio_bus e000b000: cannot get PHY at address 7
        [Mon May 12 18:33:03.600 2014] [   12.877368] xemacps e000b000.ps7-ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54
        [Mon May 12 18:33:03.600 2014] [   12.877370] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
        [Mon May 12 18:33:03.615 2014] [   12.877371] ehci-pci: EHCI PCI platform driver
        [Mon May 12 18:33:03.615 2014] [   12.877372] zynq-dr e0002000.ps7-usb: Unable to init USB phy, missing?
        [Mon May 12 18:33:03.631 2014] [   12.877373] usbcore: registered new interface driver usb-storage
[Mon May 12 18:33:03.787 2014] [   12.877400] usbhid: USB HID core driver
[Mon May 12 18:33:03.803 2014] [   12.877205] TCP: cubic registered
[Mon May 12 18:33:03.803 2014] [   12.877206] NET: Registered protocol family 17
[Mon May 12 18:33:03.803 2014] [   12.877206] Registering SWP/SWPB emulation handler
[Mon May 12 18:33:03.818 2014] [   12.877207] bootconsole [earlycon0] disabled
/include/linux/syslog.h

但是我不知道如何从这里运行二进制文件

我正在运行
exec
alsao,但也无法通过

system()
也存在于Unix上,但它是一个用户空间libc api调用,您不能在内核模式驱动程序中使用它。windows上也是如此。如果驱动程序启动一个二进制可执行文件,则在两个系统上使用不同的api调用

可以在linux上启动二进制可执行文件,最好的例子是,当内核在引导过程中启动
/sbin/init

可以通过
do\u execve()
api调用从kernelmode启动进程,您可以在内核源代码中看到这一点

在本例中,我看到了2个(以及更好的IMHO)选项来启动二进制文件:

  • 这是一个内核消息,由系统日志守护进程捕获。如果出现与给定regexp匹配的消息,这些守护进程通常可以执行某些操作(例如,运行脚本)。对于这样的syslog守护进程,最好的选择是(imho)syslog ng或rsyslog

  • 有一个名为
    udev
    的基础设施,它是几乎所有较新linux发行版的核心组件。udev的功能:实际监视计算机设备树的更改,如果发生任何更改(即,如果插入了供应商:modelid的新usb设备),将执行其配置的操作。(初始化设备驱动程序、调用外部二进制文件、加载备用模块等)

  • 在您的位置,我做了(2),尽管udev的配置有点复杂,并且没有很好的文档记录。使用syslog脚本,您可以更快地完成这项工作,尽管这不是一个很好的解决方案

    我几乎可以肯定,实现目标不需要内核模式编程。

    system()
    也存在于Unix上,但它是一个用户空间libc api调用,您不能在内核模式驱动程序中使用它。windows上也是如此。如果驱动程序启动一个二进制可执行文件,则在两个系统上使用不同的api调用

    可以在linux上启动二进制可执行文件,最好的例子是,当内核在引导过程中启动
    /sbin/init

    可以通过
    do\u execve()
    api调用从kernelmode启动进程,您可以在内核源代码中看到这一点

    在本例中,我看到了2个(以及更好的IMHO)选项来启动二进制文件:

  • 这是一个内核消息,由系统日志守护进程捕获。如果出现与给定regexp匹配的消息,这些守护进程通常可以执行某些操作(例如,运行脚本)。对于这样的syslog守护进程,最好的选择是(imho)syslog ng或rsyslog

  • 有一个名为
    udev
    的基础设施,它是几乎所有较新linux发行版的核心组件。udev的功能:实际监视计算机设备树的更改,如果发生任何更改(即,如果插入了供应商:modelid的新usb设备),将执行其配置的操作。(初始化设备驱动程序、调用外部二进制文件、加载备用模块等)

  • 在您的位置,我做了(2),尽管udev的配置有点复杂,并且没有很好的文档记录。使用syslog脚本,您可以更快地完成这项工作,尽管这不是一个很好的解决方案


    我几乎可以肯定,实现目标不需要内核模式编程。

    system()
    在unix上也存在,但它是一个用户空间libc api调用,不能在内核模式驱动程序中使用。就像你不能在windows上使用它一样。看起来很有希望。@PeterHorvath那么在内核模式驱动程序中有什么选项吗?不,你不应该为此编写或修改内核驱动程序,只需要在syslog守护程序或udev配置中玩一点就足够了。对于大多数syslog守护进程,如果出现这样的内核日志事件,您可以调用二进制文件。使用udev,如果出现这样的设备(具有给定的vendorid),您可以做一些事情。@PeterHorvath您可以用一个示例代码给出一个答案,使用syslog守护程序或udev调用二进制吗?
    system()
    在unix上也存在,但它是一个用户空间libc api调用,您不能在内核模式驱动程序中使用它。就像你不能在windows上使用它一样。看起来很有希望。@PeterHorvath那么在内核模式驱动程序中有什么选项吗?不,你不应该为此编写或修改内核驱动程序,只需要在syslog守护程序或udev配置中玩一点就足够了。对于大多数syslog守护进程,如果出现这样的内核日志事件,您可以调用二进制文件。使用udev,如果出现这样的设备(具有给定的vendorid),您可以做一些事情。@PeterHorvath您可以用一个示例代码来回答使用syslog daemon或udev调用二进制吗?我更新了上面的问题。另外,在我的实际应用程序中,我不会放置任何文件系统(无论是intirmafs还是任何其他文件系统)/sbin/init是在安装文件系统之后出现的(我已经看到这些文件夹是initrmafs.cpio的一部分),我可能无法访问这些文件夹,因为我没有使用它。@gpuguy否。您开始将新问题整合到您已经回答的问题中。你在谷歌上搜索过udev和syslog配置吗?不,你想要答案,但你不工作也不投票。实际上,你想要的不是答案,而是让别人来做你的工作。这是不可思议的邪恶。我更新了上面的问题。在我的实际应用中,我也会
            [Mon May 12 18:33:00.027 2014] 
            [Mon May 12 18:33:00.027 2014] U-Boot SPL 2014.01 (May 12 2014 - 16:08:58)
            [Mon May 12 18:33:00.027 2014] mmc boot
            [Mon May 12 18:33:00.074 2014] reading fpga.bin
            [Mon May 12 18:33:00.308 2014] zynq_align_dma_buffer: Bitstream is not swapped(1) - swap it
            [Mon May 12 18:33:00.573 2014] reading system.dtb
            [Mon May 12 18:33:00.589 2014] spl: error reading image system.dtb, err - -1
            [Mon May 12 18:33:00.589 2014] reading u-boot.img
            [Mon May 12 18:33:00.589 2014] reading u-boot.img
            [Mon May 12 18:33:00.651 2014] 
            [Mon May 12 18:33:00.651 2014] 
            [Mon May 12 18:33:00.651 2014] U-Boot 2014.01 (May 12 2014 - 16:08:58)
            [Mon May 12 18:33:00.651 2014] 
            [Mon May 12 18:33:00.651 2014] I2C:   ready
            [Mon May 12 18:33:00.651 2014] Memory: ECC disabled
            [Mon May 12 18:33:00.651 2014] DRAM:  1 GiB
            [Mon May 12 18:33:00.667 2014] MMC:   zynq_sdhci: 0
            [Mon May 12 18:33:00.667 2014] Using default environment
            [Mon May 12 18:33:00.667 2014] 
            [Mon May 12 18:33:00.667 2014] In:    serial
            [Mon May 12 18:33:00.667 2014] Out:   serial
            [Mon May 12 18:33:00.667 2014] Err:   serial
            [Mon May 12 18:33:00.667 2014] Net:   Gem.e000b000
            [Mon May 12 18:33:00.667 2014] 
            [Mon May 12 18:33:00.729 2014] Device: zynq_sdhci
            [Mon May 12 18:33:00.729 2014] Manufacturer ID: 2
            [Mon May 12 18:33:00.729 2014] OEM: 544d
            [Mon May 12 18:33:00.729 2014] Name: SA02G 
            [Mon May 12 18:33:00.729 2014] Tran Speed: 50000000
            [Mon May 12 18:33:00.729 2014] Rd Block Len: 512
            [Mon May 12 18:33:00.729 2014] SD version 3.0
            [Mon May 12 18:33:00.729 2014] High Capacity: No
            [Mon May 12 18:33:00.729 2014] Capacity: 1.8 GiB
            [Mon May 12 18:33:00.729 2014] Bus Width: 4-bit
            [Mon May 12 18:33:00.729 2014] reading uEnv.txt
            [Mon May 12 18:33:00.745 2014] ** Unable to read file uEnv.txt **
            [Mon May 12 18:33:00.745 2014] Copying Linux from SD to RAM...
            [Mon May 12 18:33:00.745 2014] reading uImage
            [Mon May 12 18:33:01.073 2014] 3588280 bytes read in 322 ms (10.6 MiB/s)
            [Mon May 12 18:33:01.073 2014] reading devicetree.dtb
            [Mon May 12 18:33:01.088 2014] 6804 bytes read in 19 ms (349.6 KiB/s)
            [Mon May 12 18:33:01.104 2014] reading uramdisk.image.gz
            [Mon May 12 18:33:01.603 2014] 5310018 bytes read in 470 ms (10.8 MiB/s)
            [Mon May 12 18:33:01.603 2014] ## Booting kernel from Legacy Image at 03000000 ...
            [Mon May 12 18:33:01.603 2014]    Image Name:   Linux-3.13.0-xilinx-dirty
            [Mon May 12 18:33:01.603 2014]    Image Type:   ARM Linux Kernel Image (uncompressed)
            [Mon May 12 18:33:01.603 2014]    Data Size:    3588216 Bytes = 3.4 MiB
            [Mon May 12 18:33:01.603 2014]    Load Address: 00008000
            [Mon May 12 18:33:01.603 2014]    Entry Point:  00008000
            [Mon May 12 18:33:01.603 2014]    Verifying Checksum ... OK
            [Mon May 12 18:33:01.665 2014] ## Loading init Ramdisk from Legacy Image at 02000000 ...
            [Mon May 12 18:33:01.665 2014]    Image Name:   
            [Mon May 12 18:33:01.665 2014]    Image Type:   ARM Linux RAMDisk Image (gzip compressed)
            [Mon May 12 18:33:01.665 2014]    Data Size:    5309954 Bytes = 5.1 MiB
            [Mon May 12 18:33:01.665 2014]    Load Address: 00000000
            [Mon May 12 18:33:01.665 2014]    Entry Point:  00000000
            [Mon May 12 18:33:01.665 2014]    Verifying Checksum ... OK
            [Mon May 12 18:33:01.743 2014] ## Flattened Device Tree blob at 02a00000
            [Mon May 12 18:33:01.743 2014]    Booting using the fdt blob at 0x2a00000
            [Mon May 12 18:33:01.743 2014]    Loading Kernel Image ... OK
            [Mon May 12 18:33:01.790 2014]    Loading Ramdisk to 1faef000, end 1ffff602 ... OK
            [Mon May 12 18:33:01.821 2014]    Loading Device Tree to 1faea000, end 1faeea93 ... OK
            [Mon May 12 18:33:01.821 2014] 
            [Mon May 12 18:33:01.821 2014] Starting kernel ...
            [Mon May 12 18:33:01.821 2014] 
            [Mon May 12 18:33:01.837 2014] Uncompressing Linux... done, booting the kernel.
            [Mon May 12 18:33:02.165 2014] [    0.000000] Booting Linux on physical CPU 0x0
            [Mon May 12 18:33:02.165 2014] [    0.000000] Linux version 3.13.0-xilinx-dirty (root@zaidi) (gcc version 4.7.3 (Sourcery CodeBench Lite 2013.05-40) ) #1 SMP PREEMPT Mon May 12 16:37:39 IST 2014
            [Mon May 12 18:33:02.165 2014] [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
            [Mon May 12 18:33:02.165 2014] [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
            [Mon May 12 18:33:02.165 2014] [    0.000000] Machine model: Xilinx Zynq
            [Mon May 12 18:33:02.165 2014] [    0.000000] bootconsole [earlycon0] enabled
            [Mon May 12 18:33:02.165 2014] [    0.000000] Memory policy: Data cache writealloc
            [Mon May 12 18:33:02.274 2014] [    0.000000] PERCPU: Embedded 8 pages/cpu @c143f000 s10688 r8192 d13888 u32768
            [Mon May 12 18:33:02.274 2014] [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260624
            [Mon May 12 18:33:02.274 2014] [    0.000000] Kernel command line: console=ttyPS0,115200n8 root=/dev/ram rw initrd=0x00800000,16M earlyprintk mtdparts=physmap-flash.0:512K(nor-fsbl),512K(nor-u-boot),5M(nor-linux),9M(nor-user),1M(nor-scratch),-(nor-rootfs)
            [Mon May 12 18:33:02.274 2014] [    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
            [Mon May 12 18:33:02.289 2014] [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
            [Mon May 12 18:33:02.289 2014] [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
            [Mon May 12 18:33:02.508 2014] [    0.000000] Memory: 1021760K/1048576K available (4857K kernel code, 310K rwdata, 1708K rodata, 198K init, 5345K bss, 26816K reserved, 270336K highmem)
            [Mon May 12 18:33:02.508 2014] [    0.000000] Virtual kernel memory layout:
            [Mon May 12 18:33:02.508 2014] [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
            [Mon May 12 18:33:02.508 2014] [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
            [Mon May 12 18:33:02.508 2014] [    0.000000]     vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
            [Mon May 12 18:33:02.508 2014] [    0.000000]     lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
            [Mon May 12 18:33:02.508 2014] [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
            [Mon May 12 18:33:02.523 2014] [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
            [Mon May 12 18:33:02.523 2014] [    0.000000]       .text : 0xc0008000 - 0xc0671828   (6567 kB)
            [Mon May 12 18:33:02.523 2014] [    0.000000]       .init : 0xc0672000 - 0xc06a39c0   ( 199 kB)
            [Mon May 12 18:33:02.523 2014] [    0.000000]       .data : 0xc06a4000 - 0xc06f1ad0   ( 311 kB)
            [Mon May 12 18:33:02.523 2014] [    0.000000]        .bss : 0xc06f1adc - 0xc0c2a1b0   (5346 kB)
            [Mon May 12 18:33:02.555 2014] [    0.000000] Preemptible hierarchical RCU implementation.
            [Mon May 12 18:33:02.555 2014] [    0.000000]     RCU lockdep checking is enabled.
            [Mon May 12 18:33:02.555 2014] [    0.000000]     Dump stacks of tasks blocking RCU-preempt GP.
            [Mon May 12 18:33:02.555 2014] [    0.000000]     RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
            [Mon May 12 18:33:02.555 2014] [    0.000000] NR_IRQS:16 nr_irqs:16 16
            [Mon May 12 18:33:02.570 2014] [    0.000000] ps7-slcr mapped to f0004000
            [Mon May 12 18:33:02.570 2014] [    0.000000] zynq_clock_init: clkc starts at f0004100
            [Mon May 12 18:33:02.570 2014] [    0.000000] Zynq clock init
            [Mon May 12 18:33:02.586 2014] [    0.000000] sched_clock: 32 bits at 333MHz, resolution 3ns, wraps every 12884901885ns
            [Mon May 12 18:33:02.586 2014] [    0.000000] ps7-ttc #0 at f0006000, irq=43
            [Mon May 12 18:33:02.601 2014] [    0.000000] Console: colour dummy device 80x30
            [Mon May 12 18:33:02.601 2014] [    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
            [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
            [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCK_DEPTH:          48
            [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_KEYS:        8191
            [Mon May 12 18:33:02.648 2014] [    0.000000] ... CLASSHASH_SIZE:          4096
            [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_ENTRIES:     16384
            [Mon May 12 18:33:02.648 2014] [    0.000000] ... MAX_LOCKDEP_CHAINS:      32768
            [Mon May 12 18:33:02.648 2014] [    0.000000] ... CHAINHASH_SIZE:          16384
            [Mon May 12 18:33:02.648 2014] [    0.000000]  memory used by lock dependency info: 3695 kB
            [Mon May 12 18:33:02.648 2014] [    0.000000]  per task-struct memory footprint: 1152 bytes
            [Mon May 12 18:33:02.648 2014] [   12.877213] Calibrating delay loop... 1325.46 BogoMIPS (lpj=6627328)
            [Mon May 12 18:33:02.679 2014] [   12.877220] pid_max: default: 32768 minimum: 301
            [Mon May 12 18:33:02.695 2014] [   12.877221] Mount-cache hash table entries: 512
            [Mon May 12 18:33:02.711 2014] [   12.877223] CPU: Testing write buffer coherency: ok
            [Mon May 12 18:33:02.711 2014] [   12.877224] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
            [Mon May 12 18:33:02.711 2014] [   12.877225] Setting up static identity map for 0x49ad18 - 0x49ad70
            [Mon May 12 18:33:02.726 2014] [   12.877226] L310 cache controller enabled
            [Mon May 12 18:33:02.726 2014] [   12.877227] l2x0: 8 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x72460000, Cache size: 512 kB
            [Mon May 12 18:33:02.929 2014] [   12.877242] CPU1: Booted secondary processor
            [Mon May 12 18:33:02.929 2014] [   12.877256] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
            [Mon May 12 18:33:02.929 2014] [   12.877256] Brought up 2 CPUs
            [Mon May 12 18:33:02.929 2014] [   12.877258] SMP: Total of 2 processors activated.
            [Mon May 12 18:33:02.929 2014] [   12.877259] CPU: All CPU(s) started in SVC mode.
            [Mon May 12 18:33:02.929 2014] [   12.877260] devtmpfs: initialized
            [Mon May 12 18:33:02.945 2014] [   12.877262] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
            [Mon May 12 18:33:02.960 2014] [   12.877264] regulator-dummy: no parameters
            [Mon May 12 18:33:02.960 2014] [   12.877265] NET: Registered protocol family 16
            [Mon May 12 18:33:02.960 2014] [   12.877266] DMA: preallocated 256 KiB pool for atomic coherent allocations
            [Mon May 12 18:33:02.976 2014] [   12.877268] cpuidle: using governor ladder
            [Mon May 12 18:33:02.976 2014] [   12.877269] cpuidle: using governor menu
            [Mon May 12 18:33:03.007 2014] [   12.877273] syscon f8000000.ps7-slcr: regmap [mem 0xf8000000-0xf8000fff] registered
            [Mon May 12 18:33:03.023 2014] [   12.877274] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
            [Mon May 12 18:33:03.023 2014] [   12.877276] hw-breakpoint: maximum watchpoint size is 4 bytes.
            [Mon May 12 18:33:03.038 2014] [   12.877277] zynq-ocm f800c000.ps7-ocmc: ZYNQ OCM pool: 256 KiB @ 0xf0080000
            [Mon May 12 18:33:03.085 2014] [   12.877287] bio: create slab <bio-0> at 0
            [Mon May 12 18:33:03.101 2014] [   12.877288] vgaarb: loaded
            [Mon May 12 18:33:03.101 2014] [   12.877289] SCSI subsystem initialized
    
    
    
            [Mon May 12 18:33:03.116 2014] [   12.877290] usbcore: registered new interface driver usbfs
            [Mon May 12 18:33:03.116 2014] [   12.877291] usbcore: registered new interface driver hub
            [Mon May 12 18:33:03.116 2014] [   12.877291] usbcore: registered new device driver usb
    
    
    
        /**************************** EXECUTE BINARY HERE ************************/
    
        /**************************** EXECUTE BINARY HERE ************************/
    
        /**************************** EXECUTE BINARY HERE ************************/
    
        /**************************** EXECUTE BINARY HERE ************************/
    
            [Mon May 12 18:33:03.132 2014] [   12.877293] media: Linux media interface: v0.10
            [Mon May 12 18:33:03.132 2014] [   12.877293] Linux video capture interface: v2.00
            [Mon May 12 18:33:03.147 2014] [   12.877294] pps_core: LinuxPPS API ver. 1 registered
            [Mon May 12 18:33:03.147 2014] [   12.877295] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
            [Mon May 12 18:33:03.147 2014] [   12.877297] PTP clock support registered
            [Mon May 12 18:33:03.163 2014] [   12.877297] EDAC MC: Ver: 3.0.0
            [Mon May 12 18:33:03.179 2014] [   12.877300] DMA-API: preallocated 4096 debug entries
            [Mon May 12 18:33:03.179 2014] [   12.877301] DMA-API: debugging enabled by kernel config
            [Mon May 12 18:33:03.179 2014] [   12.877301] Switched to clocksource arm_global_timer
            [Mon May 12 18:33:03.241 2014] [   12.877310] NET: Registered protocol family 2
            [Mon May 12 18:33:03.241 2014] [   12.877311] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
            [Mon May 12 18:33:03.257 2014] [   12.877313] TCP bind hash table entries: 8192 (order: 6, 294912 bytes)
            [Mon May 12 18:33:03.257 2014] [   12.877314] TCP: Hash tables configured (established 8192 bind 8192)
            [Mon May 12 18:33:03.272 2014] [   12.877315] TCP: reno registered
            [Mon May 12 18:33:03.272 2014] [   12.877316] UDP hash table entries: 512 (order: 3, 40960 bytes)
            [Mon May 12 18:33:03.288 2014] [   12.877317] UDP-Lite hash table entries: 512 (order: 3, 40960 bytes)
            [Mon May 12 18:33:03.288 2014] [   12.877318] NET: Registered protocol family 1
            [Mon May 12 18:33:03.319 2014] [   12.877319] RPC: Registered named UNIX socket transport module.
            [Mon May 12 18:33:03.319 2014] [   12.877320] RPC: Registered udp transport module.
            [Mon May 12 18:33:03.319 2014] [   12.877321] RPC: Registered tcp transport module.
            [Mon May 12 18:33:03.319 2014] [   12.877322] RPC: Registered tcp NFSv4.1 backchannel transport module.
            [Mon May 12 18:33:03.319 2014] [   12.877323] Trying to unpack rootfs image as initramfs...
            [Mon May 12 18:33:03.319 2014] [   12.877324] rootfs image is not initramfs (no cpio magic); looks like an initrd
            [Mon May 12 18:33:03.366 2014] [   12.877331] Freeing initrd memory: 5184K (dfaef000 - dffff000)
            [Mon May 12 18:33:03.381 2014] [   12.877332] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
            [Mon May 12 18:33:03.397 2014] [   12.877335] bounce pool size: 64 pages
            [Mon May 12 18:33:03.397 2014] [   12.877336] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
            [Mon May 12 18:33:03.413 2014] [   12.877338] msgmni has been set to 1477
            [Mon May 12 18:33:03.428 2014] [   12.877339] io scheduler noop registered
            [Mon May 12 18:33:03.428 2014] [   12.877339] io scheduler deadline registered
            [Mon May 12 18:33:03.428 2014] [   12.877340] io scheduler cfq registered (default)
            [Mon May 12 18:33:03.459 2014] [   12.877343] dma-pl330 f8003000.ps7-dma: unable to set the seg size
            [Mon May 12 18:33:03.459 2014] [   12.877344] dma-pl330 f8003000.ps7-dma: Loaded driver for PL330 DMAC-2364208
            [Mon May 12 18:33:03.459 2014] [   12.877345] dma-pl330 f8003000.ps7-dma:     DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
            [Mon May 12 18:33:03.475 2014] [   12.877347] e0001000.serial: ttyPS1 at MMIO 0xe0001000 (irq = 82, base_baud = 3124999) is a xuartps
            [Mon May 12 18:33:03.475 2014] [   12.877349] xdevcfg f8007000.ps7-dev-cfg: ioremap 0xf8007000 to f0068000
            [Mon May 12 18:33:03.506 2014] [   12.877355] brd: module loaded
            [Mon May 12 18:33:03.522 2014] [   12.877358] loop: module loaded
            [Mon May 12 18:33:03.553 2014] [   12.877360] zynq-qspi e000d000.ps7-qspi: master is unqueued, this is deprecated
            [Mon May 12 18:33:03.553 2014] [   12.877361] zynq-qspi e000d000.ps7-qspi: at 0xE000D000 mapped to 0xF006A000, irq=51
            [Mon May 12 18:33:03.569 2014] [   12.877364] e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
            [Mon May 12 18:33:03.569 2014] [   12.877365] e1000e: Copyright(c) 1999 - 2013 Intel Corporation.
            [Mon May 12 18:33:03.584 2014] [   12.877366] libphy: XEMACPS mii bus: probed
            [Mon May 12 18:33:03.600 2014] [   12.877367] mdio_bus e000b000: cannot get PHY at address 7
            [Mon May 12 18:33:03.600 2014] [   12.877368] xemacps e000b000.ps7-ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54
            [Mon May 12 18:33:03.600 2014] [   12.877370] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
            [Mon May 12 18:33:03.615 2014] [   12.877371] ehci-pci: EHCI PCI platform driver
            [Mon May 12 18:33:03.615 2014] [   12.877372] zynq-dr e0002000.ps7-usb: Unable to init USB phy, missing?
            [Mon May 12 18:33:03.631 2014] [   12.877373] usbcore: registered new interface driver usb-storage
    [Mon May 12 18:33:03.787 2014] [   12.877400] usbhid: USB HID core driver
    [Mon May 12 18:33:03.803 2014] [   12.877205] TCP: cubic registered
    [Mon May 12 18:33:03.803 2014] [   12.877206] NET: Registered protocol family 17
    [Mon May 12 18:33:03.803 2014] [   12.877206] Registering SWP/SWPB emulation handler
    [Mon May 12 18:33:03.818 2014] [   12.877207] bootconsole [earlycon0] disabled
    
    #define SYSLOG_ACTION_CLEAR          5
    /* Disable printk's to console */
    #define SYSLOG_ACTION_CONSOLE_OFF    6
    /* Enable printk's to console */
    #define SYSLOG_ACTION_CONSOLE_ON     7
    /* Set level of messages printed to console */
    #define SYSLOG_ACTION_CONSOLE_LEVEL  8
    /* Return number of unread characters in the log buffer */
    #define SYSLOG_ACTION_SIZE_UNREAD    9
    /* Return size of the log buffer */
    #define SYSLOG_ACTION_SIZE_BUFFER   10
    
    #define SYSLOG_FROM_CALL 0
    #define SYSLOG_FROM_FILE 1
    
    int do_syslog(int type, char __user *buf, int count, bool from_file);
    
    #endif /* _LINUX_SYSLOG_H */