易截截图软件、单文件、免安装、纯绿色、仅160KB

linux 0.11 内核学习 ioctl.c


/*
 * ioctl.c 文件实现了输入/输出控制系统调用ioctl(),该函数
 * 主要是调用函数tty_ioctl()对终端的IO进行控制
 */
/*
 *  linux/fs/ioctl.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <string.h>
#include <errno.h>
#include <sys/stat.h>
#include <linux/sched.h>
extern int tty_ioctl(int dev, int cmd, int arg);
typedef int (*ioctl_ptr)(int dev,int cmd,int arg);
/* 定义系统中设备种数 */
#define NRDEVS ((sizeof (ioctl_table))/(sizeof (ioctl_ptr)))
/* ioctl 操作函数指针表 */
static ioctl_ptr ioctl_table[]={
NULL, /* nodev */
NULL, /* /dev/mem */
NULL, /* /dev/fd */
NULL, /* /dev/hd */
tty_ioctl, /* /dev/ttyx */
tty_ioctl, /* /dev/tty */
NULL, /* /dev/lp */
NULL}; /* named pipes */

/* 输入输出控制函数 */
int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
{
struct file * filp;
int dev,mode;
// 如果文件描述符超出可打开的文件数,或者对应描述符的文件结构指针为空,则返回出错码
if (fd >= NR_OPEN || !(filp = current->filp[fd]))
return -EBADF;
// 取对应文件的属性
mode=filp->f_inode->i_mode;
// 如果该文件不是字符文件,也不是块设备文件,则返回出错码
if (!S_ISCHR(mode) && !S_ISBLK(mode))
return -EINVAL;
// 从字符或块设备文件的i 节点中取设备号。如果设备号大于系统现有的设备数,则返回出错号
dev = filp->f_inode->i_zone[0];
if (MAJOR(dev) >= NRDEVS)
return -ENODEV;
// 如果该设备在ioctl 函数指针表中没有对应函数
if (!ioctl_table[MAJOR(dev)])
return -ENOTTY;
// 否则返回实际ioctl 函数返回码
return ioctl_table[MAJOR(dev)](dev,cmd,arg);
}
参考《linux内核完全注释》和网上相关文章


相关文档:

一个入侵linux的实例

我发现了一个网站,于是常规入侵。很好,它的FINGER开着,于是我编了一个SHELL,aaa帐号试到zzz(这是我发现的一个网上规律,那就是帐号的长度与口令的强度成正比, 如果一个帐号只有两三位长,那它的口令一般也很简单,反之亦然,故且称之为若氏定理吧),结果一个帐号也不存在,我没有再试它的帐号。因为我被它开的端口吸 ......

实战Linux Bluetooth编程(三) HCI层编程

http://www.ej38.com/showinfo/linux-111338.html
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host
Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC,
Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth D ......

linux下vncserver配置与win下vnc客户端


linux下vncserver配置与win下vnc客户端


8 Nov, 2008
 
管理&服务

< type="text/javascript"><!--
google_ad_client = "pub-7056129240767270";
/* 300x250, 创建于 09-2-13 */
google_ad_slot = "270491 ......

linux与j2ee

J2ee程序员应该掌握的linux知识
开发者在线 Builder.com.cn 更新时间:2007-09-01作者:中国IT实验室 来源:中国IT实验室
本文关键词: Linux J2ee
 一般大型J2EE应用都在建构在linux环境下的。开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试。但是最后的发布还是要到linux环境, ......

linux,windows沟通的桥梁ssh

介绍SSH
什么是SSH?
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号