From 126f61dab53519082406b6e98f18b03200cf56fb Mon Sep 17 00:00:00 2001 From: gatieme Date: Wed, 11 May 2016 14:33:28 +0800 Subject: [PATCH] pid... --- study/process/pid/.get_pid.o.d | 178 +++++++++++++++++++++++++++++++++ study/process/pid/Makefile | 14 +++ study/process/pid/get_pid.c | 78 +++++++++++++++ 3 files changed, 270 insertions(+) create mode 100644 study/process/pid/.get_pid.o.d create mode 100644 study/process/pid/Makefile create mode 100644 study/process/pid/get_pid.c diff --git a/study/process/pid/.get_pid.o.d b/study/process/pid/.get_pid.o.d new file mode 100644 index 0000000..f1308da --- /dev/null +++ b/study/process/pid/.get_pid.o.d @@ -0,0 +1,178 @@ +get_pid.o: \ + /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/process/pid/get_pid.c \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/include/linux/kconfig.h \ + include/linux/autoconf.h include/linux/init.h include/linux/compiler.h \ + include/linux/compiler-gcc.h include/linux/compiler-gcc4.h \ + include/linux/module.h include/linux/list.h include/linux/types.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/types.h \ + include/asm-generic/types.h include/asm-generic/int-ll64.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h include/linux/posix_types.h \ + include/linux/stddef.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/posix_types.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/posix_types_64.h \ + include/linux/poison.h include/linux/prefetch.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/processor.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/processor-flags.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/vm86.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/ptrace.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/ptrace-abi.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/segment.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/cache.h \ + include/linux/linkage.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/linkage.h \ + include/linux/stringify.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/page_types.h \ + include/linux/const.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/page_64_types.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/math_emu.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/sigcontext.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/current.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/percpu.h \ + include/linux/kernel.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stdarg.h \ + include/linux/bitops.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/bitops.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/alternative.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/asm.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/cpufeature.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/required-features.h \ + include/asm-generic/bitops/sched.h include/asm-generic/bitops/hweight.h \ + include/asm-generic/bitops/fls64.h \ + include/asm-generic/bitops/ext2-non-atomic.h \ + include/asm-generic/bitops/le.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/byteorder.h \ + include/linux/byteorder/little_endian.h include/linux/swab.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/swab.h \ + include/linux/byteorder/generic.h include/asm-generic/bitops/minix.h \ + include/linux/log2.h include/linux/typecheck.h include/linux/ratelimit.h \ + include/linux/param.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/param.h \ + include/asm-generic/param.h include/linux/dynamic_debug.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/bug.h \ + include/asm-generic/bug.h include/asm-generic/percpu.h \ + include/linux/threads.h include/linux/percpu-defs.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/system.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/cmpxchg.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/cmpxchg_64.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/nops.h \ + include/linux/irqflags.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/irqflags.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/paravirt.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/pgtable_types.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/pgtable_64_types.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/paravirt_types.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/desc_defs.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/kmap_types.h \ + include/asm-generic/kmap_types.h include/linux/cpumask.h \ + include/linux/bitmap.h include/linux/string.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/string.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/string_64.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/page.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/page_64.h \ + include/asm-generic/memory_model.h include/asm-generic/getorder.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/msr.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/msr-index.h \ + include/linux/ioctl.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/ioctl.h \ + include/asm-generic/ioctl.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/errno.h \ + include/asm-generic/errno.h include/asm-generic/errno-base.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/cpumask.h \ + include/linux/personality.h include/linux/cache.h include/linux/math64.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/div64.h \ + include/asm-generic/div64.h include/linux/err.h include/linux/stat.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/stat.h \ + include/linux/time.h include/linux/seqlock.h include/linux/spinlock.h \ + include/linux/preempt.h include/linux/thread_info.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/thread_info.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/ftrace.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/atomic.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/atomic_64.h \ + include/asm-generic/atomic-long.h include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/spinlock_types.h \ + include/linux/lockdep.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/spinlock.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/rwlock.h \ + include/linux/spinlock_api_smp.h include/linux/kmod.h \ + include/linux/gfp.h include/linux/mmzone.h include/linux/wait.h \ + include/linux/numa.h include/linux/nodemask.h \ + include/linux/pageblock-flags.h include/linux/bounds.h \ + include/linux/memory_hotplug.h include/linux/notifier.h \ + include/linux/errno.h include/linux/mutex.h include/linux/rwsem.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/rwsem.h \ + include/linux/srcu.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/mmzone.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/mmzone_64.h \ + include/linux/mmdebug.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/smp.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/mpspec.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/mpspec_def.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/x86_init.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/bootparam.h \ + include/linux/screen_info.h include/linux/apm_bios.h include/linux/edd.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/e820.h \ + include/linux/ioport.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/ist.h \ + include/video/edid.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/apic.h \ + include/linux/delay.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/delay.h \ + include/linux/pm.h include/linux/workqueue.h include/linux/timer.h \ + include/linux/ktime.h include/linux/jiffies.h include/linux/timex.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/timex.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/tsc.h \ + include/linux/debugobjects.h include/linux/completion.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/apicdef.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/fixmap.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/acpi.h \ + include/acpi/pdc_intel.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/numa.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/numa_64.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/mmu.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/vsyscall.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/idle.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/io_apic.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/irq_vectors.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/sparsemem.h \ + include/linux/topology.h include/linux/smp.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/topology.h \ + include/asm-generic/topology.h include/linux/sysctl.h \ + include/linux/elf.h include/linux/elf-em.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/elf.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/user.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/user_64.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/auxvec.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/vdso.h \ + include/linux/kobject.h include/linux/sysfs.h include/linux/kref.h \ + include/linux/moduleparam.h include/linux/tracepoint.h \ + include/linux/rcupdate.h include/linux/rcutree.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/local.h \ + include/linux/percpu.h include/linux/slab.h include/linux/slab_def.h \ + include/linux/kmalloc_sizes.h include/linux/pfn.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/module.h \ + include/asm-generic/module.h include/trace/events/module.h \ + include/trace/define_trace.h include/linux/sched.h \ + include/linux/capability.h include/linux/rbtree.h \ + include/linux/mm_types.h include/linux/auxvec.h \ + include/linux/prio_tree.h include/linux/page-debug-flags.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/cputime.h \ + include/asm-generic/cputime.h include/linux/sem.h include/linux/ipc.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/ipcbuf.h \ + include/asm-generic/ipcbuf.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/sembuf.h \ + include/linux/signal.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/signal.h \ + include/asm-generic/signal-defs.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/siginfo.h \ + include/asm-generic/siginfo.h include/linux/path.h include/linux/pid.h \ + include/linux/proportions.h include/linux/percpu_counter.h \ + include/linux/seccomp.h include/linux/rculist.h include/linux/rtmutex.h \ + include/linux/plist.h include/linux/resource.h \ + /usr/src/kernels/2.6.32-573.26.1.el6.x86_64/arch/x86/include/asm/resource.h \ + include/asm-generic/resource.h include/linux/hrtimer.h \ + include/linux/task_io_accounting.h include/linux/latencytop.h \ + include/linux/cred.h include/linux/key.h include/linux/selinux.h \ + include/linux/percpu-rwsem.h include/linux/atomic.h include/linux/aio.h \ + include/linux/aio_abi.h include/linux/uio.h diff --git a/study/process/pid/Makefile b/study/process/pid/Makefile new file mode 100644 index 0000000..89949a4 --- /dev/null +++ b/study/process/pid/Makefile @@ -0,0 +1,14 @@ + + +obj-m := get_pid.o + +KERNELDIR ?= /lib/modules/$(shell uname -r)/build + +PWD := $(shell pwd) + +all: + make -C $(KERNELDIR) M=$(PWD) modules + +clean: + make -C $(KERNELDIR) M=$(PWD) clean + diff --git a/study/process/pid/get_pid.c b/study/process/pid/get_pid.c new file mode 100644 index 0000000..0cc1caf --- /dev/null +++ b/study/process/pid/get_pid.c @@ -0,0 +1,78 @@ +/************************************************************************* + > File Name: process.c + > Author: GatieMe + > Mail: gatieme@163.com + > Created Time: 2016年04月01日 星期五 21时09分29秒 + ************************************************************************/ + + + +#include +#include +#include + +#include +#include + + + +//#define METHOD 2 +static unsigned int METHOD = 1; +module_param(METHOD, uint,0400); + +static unsigned int PID = 1; +module_param(PID, uint,0400); + + +int kthread_function(void *argc) +{ + printk(KERN_ALERT "in the kernel thread function!\n"); + return 0; +} + +void do_print_pid() +{ + pid_t res; + + // create a kernel thread + res = kernel_thread(kthread_function, NULL, CLONE_KERNEL); + + // get the pid of the kernel thread you create + struct pid* ktpid = find_get_pid(res); + + // get the task info of the kernel thread + struct task_struct* task = pid_task(kpid, PIDTYPE_PID); + + printk(KERN_ALERT "the state of the task is:%d\n", task->state); //显示任务当前所处的状态 + + // get the real PID of the kernel thread + printk(KERN_ALERT "the pid of the task is:%d\n", task->pid); //显示任务的进程号 + + // get the thread id of the kernel thread + printk(KERN_ALERT "the tgid of the task is:%d\n", task->tgid); + + // 显示函数kernel_thread( )函数执行结果 + printk(KERN_ALERT "the kernel_thread result is:%d\n", res); + printk(KERN_ALERT "out pid_task_init.\n"); + + return 0; +} + + +static int init_print_pid(void) +{ + +} + +static void exit_print_pid(void) +{ + printk(KERN_ALERT "GOOD BYE:print_pid!!\n"); +} + + + +module_init(init_print_pidt); +module_exit(exit_print_pid); + +MODULE_AUTHOR("gatieme"); +MODULE_LICENSE("GPL");