资源简介
udev(userspace device management)的源代码
代码片段和文件信息
/*
* Copyright (C) 2003-2004 Greg Kroah-Hartman
* Copyright (C) 2004-2006 Kay Sievers
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not write to the Free Software Foundation Inc.
* 51 Franklin Street Fifth Floor Boston MA 02110-1301 USA.
*
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “udev.h“
#include “udev_rules.h“
#include “udev_selinux.h“
#ifdef USE_LOG
void log_message(int priority const char *format ...)
{
va_list args;
if (priority > udev_log_priority)
return;
va_start(args format);
vsyslog(priority format args);
va_end(args);
}
#endif
static void asmlinkage sig_handler(int signum)
{
switch (signum) {
case SIGALRM:
exit(1);
case SIGINT:
case SIGTERM:
exit(20 + signum);
}
}
int main(int argc char *argv[] char *envp[])
{
struct sysfs_device *dev;
struct udevice *udev;
const char *maj *min;
struct udev_rules rules;
const char *action;
const char *devpath;
const char *subsystem;
struct sigaction act;
int devnull;
int retval = -EINVAL;
if (argc == 2 && strcmp(argv[1] “-V“) == 0) {
printf(“%s\n“ UDEV_VERSION);
exit(0);
}
/* set std fd‘s to /dev/null /sbin/hotplug forks us we don‘t have them at all */
devnull = open(“/dev/null“ O_RDWR);
if (devnull >= 0) {
if (devnull != STDIN_FILENO)
dup2(devnull STDIN_FILENO);
if (devnull != STDOUT_FILENO)
dup2(devnull STDOUT_FILENO);
if (devnull != STDERR_FILENO)
dup2(devnull STDERR_FILENO);
if (devnull > STDERR_FILENO)
close(devnull);
}
logging_init(“udev“);
if (devnull < 0)
err(“open /dev/null failed: %s“ strerror(errno));
udev_config_init();
selinux_init();
dbg(“version %s“ UDEV_VERSION);
/* set signal handlers */
memset(&act 0x00 sizeof(act));
act.sa_handler = (void (*)(int)) sig_handler;
sigemptyset (&act.sa_mask);
act.sa_flags = 0;
sigaction(SIGALRM &act NULL);
sigaction(SIGINT &act NULL);
sigaction(SIGTERM &act NULL);
/* trigger timeout to prevent hanging processes */
alarm(UDEV_ALARM_TIMEOUT);
action = getenv(“ACTION“);
devpath = getenv(“DEVPATH“);
subsystem = getenv(“SUBSYSTEM“);
/* older kernels passed the SUBSYSTEM only as argument */
if (subsystem == NULL && argc == 2)
subsystem = argv[1];
if (action == NULL || subsystem == NULL || devpath == NULL) {
err(“ac
- 上一篇:libv4l-0.6.2-test.tar.gz
- 下一篇:百度分词词库
相关资源
- libv4l-0.6.2-test.tar.gz
- makefile的详细说明文档
- 利用信号进行进程间通信
- Linux中的网络数据包捕获
- 基于QT+Linux的网络聊天室
- 银行家算法linux下实现
- linux下哲学家进餐问题实现
- UCloner-10.04.7.tar.gz
- linux libgcc_s.so.1 libgcc_s-4.4.5-20110214.
- uClinux-dist-20070130.tar.tar
- linux 实验7
- Linux iptables防火墙深度理解与实战应用
- makefile实验——华农Linux实验8
- quartus_II_13.1链接
- zw_(linuxc)linux进程监控和进程守护程
- linux 下的无线点菜系统
- libxl注册机源码支持window和linux
- linux操作系统实验二
- Linux基线修复
- wiegand维根协议驱动程序
- linux内核中断
- Linux课程设计—基于服务器的文件共享
- 英特尔集成显卡及核心显卡Intel(R)
- jdk-7u67-linux-x64.tar.gz
- Intel Parallel Studio XE 2018 Update 1 Windows
- Linux下的Socket聊天系统,QT完整界面
- Linux下的QT车牌识别门禁系统基于ope
- SElinux详细讲解
- Linux下使用UDP协议的点对点聊天程序含
- Linux系统自动不停重启并计数的shell脚
评论
共有 条评论