零敲牛皮糖:Linux2.6内核源码解析_进程遍历

/*
 *File    : test.c
 *Author  : DavidLin
 *Date    : 2014-12-07pm
 *Email   : [email protected] or [email protected]
 *world   : the city of SZ, in China
 *Ver     : 000.000.001
 *history :     editor      time            do
 *          1)LinPeng       2014-12-07      created this file!
 *          2)
 */  

#include <linux/init.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/sched.h>

static int list_init(void)
{
    struct task_struct *task;

    task = NULL;

    for_each_process(task) {
        printk("pid = %d\n", task->pid);
    }

    return 0;
}

static void list_exit(void)
{
    printk("KERNEL MACRO: for_each_process exit\n");
}

module_init(list_init);
module_exit(list_exit);

MODULE_AUTHOR("Linpeng1577");
MODULE_DESCRIPTION("KERNEL 2.6 MACRO STUDY");
MODULE_LICENES(GPL);

这个例程的Makefile文件及测试参考之前博客:

Linux内核编程:从hello world 开始-(1)_C文件编写

Linux内核编程:从hello world 开始-(2)_Makefile文件编写

Linux内核编程:从hello world 开始-(3)_run

1.不过tail -n 3 /var/log/messages 可以改为tail -n 100 /var/log/messages;

2.ps -el 列出所以进程。

时间: 2024-10-15 14:21:59

零敲牛皮糖:Linux2.6内核源码解析_进程遍历的相关文章

Linux内核编程:Linux2.6内核源码解析_进程遍历 &nbsp; &nbsp; &nbsp; &nbsp;

/*     *File    : test.c   *Author  : DavidLin        *Date    : 2014-12-07pm        *Email   : [email protected] or [email protected]        *world   : the city of SZ, in China        *Ver     : 000.000.001        *history :     editor      time    

内核源码分析之进程地址空间(基于3.16-rc4)

所谓进程的地址空间,指的就是进程的虚拟地址空间.当创建一个进程时,内核会为该进程分配一个线性的地址空间(虚拟地址空间),有了虚拟地址空间后,内核就可以通过页表将进程的物理地址地址空间映射到其虚拟地址空间中,程序员所能看到的其实都是虚拟地址,物理地址对程序员而言是透明的.当程序运行时,MMU硬件机制会将程序中的虚拟地址转换成物理地址,然后在内存中找到指令和数据,来执行进程的代码.下面我们就来分析和进程的地址空间相关的各种数据结构和操作. 用到的数据结构: 1.内存描述符struct mm_stru

Linux内核源码学习之进程切换细节整理

linux中的进程是个最基本的概念,进程从运行队列到开始运行有两个开始的地方, 一个就是switch_to宏中的标号1:"1:/t",//只要不是新创建的进程,几乎都是从上面的那个标号1开始的,而switch_to宏则是除了内核本身,所有的进程要 想运行都要经过的地方 另 一个就是ret_form_fork 这样看来,虽然linux的进程体系以及进程调度非常复杂,但是总体看来就是一个沙漏状, 对于系统中的每个新进程它首次被执行的过程必然是: sys_fork---->do_for

第一次作业:基于Linux2.6内核源码进程模型分析

1.概括 进程的基本概念 操作系统是如何组织进程的 进程是如何调度的 对Linux操作系统进程模型的看法 2.什么是进程 一个进程就是一个正在运行的程序.一个进程应该包含以下内容:(1) 程序的代码,既然进程是一个正在运行的程序,自然需要程序的代码(2) 程序的数据(3) CPU寄存器的值,包括通用寄存器,程序计数器(4) 堆(heap)是用来保存进程运行时动态分配的内存空间(5) 栈(stack)有两个用途,1保存运行的上下文信息.2在函数调用时保存被调用函数的形参或者局部变量(6) 进程所占

关于互斥锁,条件变量的内核源码解析

一.解决问题和适用范围 主要是用来等待一个条件,这个条件可能需要另一个线程来满足这个条件.这个和我们平常适用的pthread_mutex_lock的最大不同在于后者保护的一般是一个代码段(也就是关键区),或者一个变量,但是由于一般来说这个变量的访问是在一个关键区中,所以可以认为是一个关键区. 但是对于条件变量,是需要的是一个事件,只有事件满足的时候才会执行后面的操作,此时就出现一个问题:如果不满足我们应该怎么办?如果如果使用简单信号量,可能另一方触发了这个条件,然后通过unlock来唤醒一个线程

Linux内核源码分析--内核启动之(6)Image内核启动(do_basic_setup函数)(Linux-3.0 ARMv7)【转】

原文地址:Linux内核源码分析--内核启动之(6)Image内核启动(do_basic_setup函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.chinaunix.net/uid-25909619-id-4938396.html 在基本分析完内核启动流程的之后,还有一个比较重要的初始化函数没有分析,那就是do_basic_setup.在内核init线程中调用了do_basic_setup,这个函数也做了很多内核和驱动的初始化工作,详解

Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 【转】

原文地址:Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.chinaunix.net/uid-25909619-id-4938390.html 在构架相关的汇编代码运行完之后,程序跳入了构架无关的内核C语言代码:init/main.c中的start_kernel函数,在这个函数中Linux内核开始真正进入初始化阶段, 下面我就顺这代码逐个函数的解释,但是这里并不会过于深入

CentOS6安装内核源码

1,安装依赖 yum -y install gcc yum -y install gcc-c++ yum install make -- 或者 yum groupinstall "Development Tools" -- 或者 yum install gcc gcc-c++ kernel-devel --安装ncurses yum install gcc make ncurses ncurses-devel perl yum update 2,下载源码包 cd /tmp wget h

(升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课程会涵盖Scala编程详解.Spark核心编程.Spark SQL和Spark Streaming.Spark内核以及源码剖析.性能调优.企业级案例实战等部分.完全从零起步,让学员可以一站式精通Spark企业级大数据开发,提升自己的职场竞争力,实现更好的升职或者跳槽,或者从j2ee等传统软件开发工程