This commit is contained in:
gatieme
2016-05-11 14:33:28 +08:00
parent d4c98cbab1
commit 126f61dab5
3 changed files with 270 additions and 0 deletions
+178
View File
@@ -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
+14
View File
@@ -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
+78
View File
@@ -0,0 +1,78 @@
/*************************************************************************
> File Name: process.c
> Author: GatieMe
> Mail: gatieme@163.com
> Created Time: 2016年04月01日 星期五 21时09分29秒
************************************************************************/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/sched.h>
#include <linux/pid.h>
//#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");