3.10.17 procfs示例
/*
* wesley
* the linux module sample of procfs
*
* wesley for testing
* 2013-12-23 14:50:14
* insmod sampleproc.ko 加载模块
* rmmod sampleproc 卸载模块
* dmesg 来查看显示内容
* lsmod 显示加载模块
http://blog.chinaunix.net/uid-23390992-id-3026872.html
http://blog.chinaunix.net/uid-24432676-id-2607766.html
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <net/net_namespace.h>
#include <linux/mm.h>
MODULE_LICENSE("XJLI/GPL");
struct proc_data_t{
int a;
int b;
} ;
struct _DATA_INFO{
int data1;
int data2;
};
static struct _DATA_INFO data_info[2];
static void *sampleproc_seq_start(struct seq_file *s, loff_t *pos)
{
static unsigned long counter = 0;
if ( *pos == 0 )
{
return &counter;
}
else
{
*pos = 0;
return NULL;
}
}
static void *sampleproc_seq_next(struct seq_file *s, void *v, loff_t *pos)
{
return NULL;
}
static void sampleproc_seq_stop(struct seq_file *s, void *v)
{
}
static int sampleproc_seq_show(struct seq_file *s, void *v)
{
struct inode *i = s->private;
struct _DATA_INFO *info = PDE_DATA(i);
seq_printf(s, "%d----%d", info->data1, info->data2);
return 0;
}
struct proc_data_t data;
static struct seq_operations sampleproc_seq_ops = {
.start = sampleproc_seq_start,
.next = sampleproc_seq_next,
.stop = sampleproc_seq_stop,
.show = sampleproc_seq_show
};
static int sampleproc_proc_open(struct inode *inode, struct file *file)
{
int ret = seq_open(file, &sampleproc_seq_ops);
if (!ret) {
struct seq_file *sf = file->private_data;
sf->private = inode;
}
return ret;
}
static const struct file_operations sampleproc_file_ops = {
.owner = THIS_MODULE,
.open = sampleproc_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = seq_release,
};
static int sampleproc_init(void)
{
//struct proc_dir_entry *proc;
data.a = 10;
data.b = 20;
printk(KERN_INFO "sampleproc_init");
data_info[0].data1=1;
data_info[0].data2=2;
proc_create_data("proc_test1", 0, NULL, &sampleproc_file_ops, &data_info[0]);
data_info[1].data1=3;
data_info[1].data2=4;
proc_create_data("proc_test2", 0, NULL, &sampleproc_file_ops, &data_info[1]);
/*第三个参数设置为NULL,默认在/proc/下建立名字为test_proc的文件*/
//proc = proc_create("sampleproc", 0, NULL, &sampleproc_file_ops);
//if (!proc)
// goto -1;
return 0;
}
static void sampleproc_exit(void)
{
printk(KERN_INFO "sampleproc_exit");
remove_proc_entry("proc_test1", NULL);
remove_proc_entry("proc_test2", NULL);
}
module_init(sampleproc_init);
module_exit(sampleproc_exit);
3.10.17 procfs示例的更多相关文章
- 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)
[源码下载] 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果) 作者:webabcd 介绍背水一战 Windows 10 之 动画 ThemeTrans ...
- 发现struct proc_dir_entry内核3.10.17移到internal中去了,倒
struct proc_dir_entry 原:2.6.38.8 在#include <linux/proc_fs.h> 现:3.10.17 在fs/proc/internal.h:str ...
- Windows 8.1 正式版微软官方原版镜像下载(新增10/17新版下载)
中文版:中国区OEM预装版本,特定国家版,锁定语言,其它功能和核心版没有区别.简体中文单语言版:锁定语言,其它功能和核心版没有区别.专业版+核心版[零售版][推荐]:镜像内包含专业版(Professi ...
- Dell Technology Summit(2018.10.17)
时间:2018.10.17地点:北京国家会议中心
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- WIN8.1 PRO RTM VOL.Enterprise.2013.10.17
Windows 8.1 Pro VL (x64) - DVD (Chinese-Simplified)ISO|Chinese - Simplified|发布日期: 2013/10/17文件名: cn_ ...
- 2020.10.17 JZOJ 提高B组T2 导弹拦截
2020.10.17 JZOJ 提高B组T2 导弹拦截 题目 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统. 敌国的导弹形成了立体打击,每个导弹可以抽象成一个三维空间中的 ...
- Lucene 4.10.2开发示例
这里面用的是比较新的Lucene4.10.2 做的一个实例.(lucene的索引不能太大,要不然效率会很低.大于1G的时候就必须考虑分布索引的问题) 先介绍一下Lucene的几个参数意义: Index ...
- 10.17 linux 文件权限
文件权限模拟练习 [root@wen ~]# groupadd incahome[root@wen ~]# usersdd oldboy -g incahome-bash: usersdd: comm ...
随机推荐
- log4j配置文件详解
在开发中经常会碰到日志,网上关于日志的框架也很多,像log4j.self4j.common-logging等,下面对log4j进行介绍. log4j是java开发的日志框架,具有低侵入的特点,其重点使 ...
- PHP发短信 PEAR 包:Services_Sms
PHP发短信 PEAR 包:Services_Sms 对于这种第三方库,PHP官方称之为PEAR,需要按照PEAR标准开发(标准URI). PEAR的优势:一键安装到php/lib/php目录,req ...
- 未来的 Web:九个不可思议的 WebGL 应用试验
WebGL 技术允许把 JavaScript 和 OpenGL ES 2.0 结合在一起,通过增加 OpenGL ES 2.0 的一个 JavaScript 绑定,WebGL 可以为 HTML5 Ca ...
- FROONT – 超棒的可视化响应式网页设计工具
FROONT 是一个基于 Web 的设计工具,在浏览器中运行,使得各类可视化设计的人员都能进行响应式的网页设计,即使是那些没有任何编码技能的设计师.FROONT 使得响应式网页设计能够可视化操作,能够 ...
- sublime text3 之snippet编写代码片段
sublime text 3 中有个强大的功能就是可以编写各种文件类型的snippet代码片段,可以节省大量的时间. 文件名为:jekyll-top.sublime-snippet(.sublime- ...
- 关于html页面head标签顺序
基本上head就这几个标签么: <meta>.<link>.<title>.<script>.<style>.<base>. 它 ...
- Web前端面试笔试题总结
最近一段时间要毕业了,忙着找工作,见过不少笔试面试题,自己总结了一些加上网上找的一些整合了一下.答案暂时都东拼西凑出来了,但是还是先不发出来,一方面是答案并不是唯一的并且自己的答案不能保证对,另一方面 ...
- C#的3DES加密解密算法
C#类如下: using System; using System.Collections.Generic; using System.Text; using System.Security.Cryp ...
- SharePoint 2010: Export User Profile Properties to a Text File or Excel using PowerShell
导出到txt [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") ...
- ContentProvider实现流程
个人记录 public class DataBaseContentProvider extends ContentProvider { private SQLiteOpenHelper mSQLite ...