您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ udev_device_get_devnode函数代码示例

51自学网 2021-06-03 09:05:48
  C++
这篇教程C++ udev_device_get_devnode函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中udev_device_get_devnode函数的典型用法代码示例。如果您正苦于以下问题:C++ udev_device_get_devnode函数的具体用法?C++ udev_device_get_devnode怎么用?C++ udev_device_get_devnode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了udev_device_get_devnode函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: qDebug

void Storage::checkDevice(int fd) {    PowerManagerLock* powerLock = PowerManager::getNewLock(this);    powerLock->activate();    qDebug() << Q_FUNC_INFO << "FD: "<< fd;    struct udev_device *dev;    dev = udev_monitor_receive_device(udev_monitor);    if (dev)    {        QString device = udev_device_get_devnode(dev);        QString path = udev_device_get_devpath(dev);        QString action = udev_device_get_action(dev);        QString devtype = udev_device_get_devtype(dev);        QString sysname("/dev/");        sysname += QString(udev_device_get_sysname(dev));        QString parent = udev_device_get_devpath( udev_device_get_parent (dev));        if (sysname.contains(QRegExp("mmcblk[0-9]//d*"))  || sysname.contains(QRegExp("mmcblk[0-9]")))        {            qDebug() << "Got " << path << ":" << action;            qDebug() << "    Got Device";            qDebug() << "    Node: " <<  udev_device_get_devnode(dev);            qDebug() << "    Subsystem: "<< udev_device_get_subsystem(dev);            qDebug() << "    Devtype: " << devtype;            qDebug() << "    Action: " << action;            qDebug() << "    Sysname: " << sysname;            qDebug() << "    sysnum: " << udev_device_get_sysnum (dev);            qDebug() << "    parent: " << parent;            processRemovableUdevEvents(devtype, path, sysname, action);        }        udev_device_unref(dev);    }    delete powerLock;}
开发者ID:bq,项目名称:cervantes,代码行数:34,


示例2: udev_watch_begin

void udev_watch_begin(struct udev *udev, struct udev_device *dev) {        char filename[UTIL_PATH_SIZE];        int wd;        int r;        if (inotify_fd < 0)                return;        log_debug("adding watch on '%s'", udev_device_get_devnode(dev));        wd = inotify_add_watch(inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);        if (wd < 0) {                log_error_errno(errno, "inotify_add_watch(%d, %s, %o) failed: %m",                                inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);                return;        }        snprintf(filename, sizeof(filename), "/run/udev/watch/%d", wd);        mkdir_parents(filename, 0755);        unlink(filename);        r = symlink(udev_device_get_id_filename(dev), filename);        if (r < 0)                log_error_errno(errno, "Failed to create symlink %s: %m", filename);        udev_device_set_watch_handle(dev, wd);}
开发者ID:lnykryn,项目名称:systemd,代码行数:25,


示例3: udev_new

static char *find_device_file (int capability){	struct udev *udev;	struct udev_enumerate *enumerate;	struct udev_list_entry *devices, *dev_list_entry;	struct udev_device *dev;	const char *path;	char *device = NULL;	udev = udev_new();	if (!udev) return NULL;	enumerate = udev_enumerate_new(udev);	udev_enumerate_add_match_property(enumerate, "MBM_CAPABILITY",									  gps_capabilities[capability]);	udev_enumerate_scan_devices(enumerate);	devices = udev_enumerate_get_list_entry(enumerate);	udev_list_entry_foreach(dev_list_entry, devices) {		path = udev_list_entry_get_name(dev_list_entry);		dev = udev_device_new_from_syspath(udev, path);		if (!udev_device_get_devnode(dev))			continue;		device = strdup(udev_device_get_devnode(dev));		udev_device_unref (dev);		if (mbm_options_debug ()) {			g_debug ("found device %s for capability %s",					 device, gps_capabilities[capability]);		}		/*		 * the code returns the first matching device found		 */		break;	}
开发者ID:idaohang,项目名称:mbm-gpsd-1,代码行数:34,


示例4: udev_monitor_receive_device

    void DeviceManager::processHotplugEvents()    {        udev_device * device;        device = udev_monitor_receive_device(hotplugMonitor);        if (device)        {            if (string(udev_device_get_action(device)) == "remove")            {                map <string, Device *>::iterator it;                for (it = devices.begin(); it != devices.end(); it++)                {                    if (it->second->getNode() == udev_device_get_devnode(device))                    {                        Device * dev = it->second;                        remove(dev);                        delete dev;                        break;                    }                }            }            else            {                add(new DeviceHard(udev_device_get_devnode(device)));            }            udev_device_unref(device);        }    }
开发者ID:Rotscha,项目名称:MasterControl,代码行数:34,


示例5: udev_node_add

void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid){        struct udev *udev = udev_device_get_udev(dev);        char filename[UTIL_PATH_SIZE];        struct udev_list_entry *list_entry;        int err = 0;        info(udev, "handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d/n",             udev_device_get_devnode(dev), udev_device_get_id_filename(dev), mode, uid, gid);        if (node_fixup(dev, mode, uid, gid) < 0)                return;        /* always add /dev/{block,char}/$major:$minor */        snprintf(filename, sizeof(filename), "%s/%s/%u:%u",                 udev_get_dev_path(udev),                 strcmp(udev_device_get_subsystem(dev), "block") == 0 ? "block" : "char",                 major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev)));        node_symlink(udev, udev_device_get_devnode(dev), filename);        /* create/update symlinks, add symlinks to name index */        udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(dev)) {                if (udev_list_entry_get_num(list_entry))                        /* simple unmanaged link name */                        node_symlink(udev, udev_device_get_devnode(dev), udev_list_entry_get_name(list_entry));                else                        link_update(dev, udev_list_entry_get_name(list_entry), 1);        }}
开发者ID:sylware,项目名称:mudev,代码行数:29,


示例6: udev_device_get_udev

/* find device node of device with highest priority */static const char *link_find_prioritized(struct udev_device *dev, bool add, const char *stackdir, char *buf, size_t bufsize){        struct udev *udev = udev_device_get_udev(dev);        DIR *dir;        int priority = 0;        const char *target = NULL;        if (add) {                priority = udev_device_get_devlink_priority(dev);                util_strscpy(buf, bufsize, udev_device_get_devnode(dev));                target = buf;        }        dir = opendir(stackdir);        if (dir == NULL)                return target;        for (;;) {                struct udev_device *dev_db;                struct dirent *dent;                dent = readdir(dir);                if (dent == NULL || dent->d_name[0] == '/0')                        break;                if (dent->d_name[0] == '.')                        continue;                info(udev, "found '%s' claiming '%s'/n", dent->d_name, stackdir);                /* did we find ourself? */                if (strcmp(dent->d_name, udev_device_get_id_filename(dev)) == 0)                        continue;                dev_db = udev_device_new_from_device_id(udev, dent->d_name);                if (dev_db != NULL) {                        const char *devnode;                        devnode = udev_device_get_devnode(dev_db);                        if (devnode != NULL) {                                dbg(udev, "compare priority of '%s'(%i) > '%s'(%i)/n", target, priority,                                    udev_device_get_devnode(dev_db), udev_device_get_devlink_priority(dev_db));                                if (target == NULL || udev_device_get_devlink_priority(dev_db) > priority) {                                        info(udev, "'%s' claims priority %i for '%s'/n",                                             udev_device_get_syspath(dev_db), udev_device_get_devlink_priority(dev_db), stackdir);                                        priority = udev_device_get_devlink_priority(dev_db);                                        util_strscpy(buf, bufsize, devnode);                                        target = buf;                                }                        }                        udev_device_unref(dev_db);                }        }        closedir(dir);        return target;}
开发者ID:sylware,项目名称:mudev,代码行数:55,


示例7: udev_monitor_new_from_netlink

void joystick_linux::monitor_joysticks(udev *p_udev) {	udev_device *dev = NULL;	udev_monitor *mon = udev_monitor_new_from_netlink(p_udev, "udev");	udev_monitor_filter_add_match_subsystem_devtype(mon, "input", NULL);	udev_monitor_enable_receiving(mon);	int fd = udev_monitor_get_fd(mon);	while (!exit_udev) {		fd_set fds;		struct timeval tv;		int ret;		FD_ZERO(&fds);		FD_SET(fd, &fds);		tv.tv_sec = 0;		tv.tv_usec = 0;		ret = select(fd+1, &fds, NULL, NULL, &tv);		/* Check if our file descriptor has received data. */		if (ret > 0 && FD_ISSET(fd, &fds)) {			/* Make the call to receive the device.			   select() ensured that this will not block. */			dev = udev_monitor_receive_device(mon);			if (dev && udev_device_get_devnode(dev) != 0) {				joy_mutex->lock();				String action = udev_device_get_action(dev);				const char* devnode = udev_device_get_devnode(dev);				if (devnode) {					String devnode_str = devnode;					if (devnode_str.find(ignore_str) == -1) {						if (action == "add")							open_joystick(devnode);						else if (String(action) == "remove")							close_joystick(get_joy_from_path(devnode));					}				}				udev_device_unref(dev);				joy_mutex->unlock();			}		}		usleep(50000);	}	//printf("exit udev/n");	udev_monitor_unref(mon);}
开发者ID:tinystringsentertainment,项目名称:godot,代码行数:53,


示例8: udev_device_get_udev

/* find device node of device with highest priority */static const char *link_find_prioritized(struct udev_device *dev, bool add, const char *stackdir, char *buf, size_t bufsize) {        struct udev *udev = udev_device_get_udev(dev);        DIR *dir;        struct dirent *dent;        int priority = 0;        const char *target = NULL;        if (add) {                priority = udev_device_get_devlink_priority(dev);                strscpy(buf, bufsize, udev_device_get_devnode(dev));                target = buf;        }        dir = opendir(stackdir);        if (dir == NULL)                return target;        FOREACH_DIRENT_ALL(dent, dir, break) {                struct udev_device *dev_db;                if (dent->d_name[0] == '/0')                        break;                if (dent->d_name[0] == '.')                        continue;                log_debug("found '%s' claiming '%s'", dent->d_name, stackdir);                /* did we find ourself? */                if (streq(dent->d_name, udev_device_get_id_filename(dev)))                        continue;                dev_db = udev_device_new_from_device_id(udev, dent->d_name);                if (dev_db != NULL) {                        const char *devnode;                        devnode = udev_device_get_devnode(dev_db);                        if (devnode != NULL) {                                if (target == NULL || udev_device_get_devlink_priority(dev_db) > priority) {                                        log_debug("'%s' claims priority %i for '%s'",                                                  udev_device_get_syspath(dev_db), udev_device_get_devlink_priority(dev_db), stackdir);                                        priority = udev_device_get_devlink_priority(dev_db);                                        strscpy(buf, bufsize, devnode);                                        target = buf;                                }                        }                        udev_device_unref(dev_db);                }        }        closedir(dir);        return target;}
开发者ID:atriwidada,项目名称:systemd,代码行数:51,


示例9: node_fixup

static int node_fixup(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid){        struct udev *udev = udev_device_get_udev(dev);        const char *devnode = udev_device_get_devnode(dev);        dev_t devnum = udev_device_get_devnum(dev);        struct stat stats;        int err = 0;        if (strcmp(udev_device_get_subsystem(dev), "block") == 0)                mode |= S_IFBLK;        else                mode |= S_IFCHR;        if (lstat(devnode, &stats) != 0) {                err = -errno;                info(udev, "can not stat() node '%s' (%m)/n", devnode);                goto out;        }        if (((stats.st_mode & S_IFMT) != (mode & S_IFMT)) || (stats.st_rdev != devnum)) {                err = -EEXIST;                info(udev, "found node '%s' with non-matching devnum %s, skip handling/n",                     udev_device_get_devnode(dev), udev_device_get_id_filename(dev));                goto out;        }        if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) {                info(udev, "set permissions %s, %#o, uid=%u, gid=%u/n", devnode, mode, uid, gid);                chmod(devnode, mode);                chown(devnode, uid, gid);        } else {                info(udev, "preserve permissions %s, %#o, uid=%u, gid=%u/n", devnode, mode, uid, gid);        }        /*         * Set initial selinux file context only on add events.         * We set the proper context on bootup (triger) or for newly         * added devices, but we don't change it later, in case         * something else has set a custom context in the meantime.         */        if (strcmp(udev_device_get_action(dev), "add") == 0)                udev_selinux_lsetfilecon(udev, devnode, mode);        /* always update timestamp when we re-use the node, like on media change events */        utimensat(AT_FDCWD, devnode, NULL, 0);out:        return err;}
开发者ID:sylware,项目名称:mudev,代码行数:48,


示例10: QString

QString Device::primaryDeviceFile() const{    if (!d)        return QString();    return QString::fromLatin1(udev_device_get_devnode(d->udev));}
开发者ID:gustavosbarreto,项目名称:libqsolid,代码行数:7,


示例11: udev_device_get_devnode

    void GamePadManager::deviceEventProc(        struct udev_device &    _device    )    {        const auto  PATH = udev_device_get_devnode( &_device );        if( PATH == nullptr ) {            return;        }        if( isGamePadPath( PATH ) == false ) {            return;        }        const auto  ACTION = udev_device_get_action( &_device );        auto        removed = ACTION != nullptr && std::strcmp(            ACTION            , "remove"        ) == 0;        if( removed ) {            this->removeGamePad( PATH );        } else {            this->addGamePad( PATH );        }    }
开发者ID:tktk,项目名称:dp.old,代码行数:26,


示例12: media_get_devname_udev

static int media_get_devname_udev(struct udev *udev,		struct media_entity *entity){	struct udev_device *device;	dev_t devnum;	const char *p;	int ret = -ENODEV;	if (udev == NULL)		return -EINVAL;	devnum = makedev(entity->info.v4l.major, entity->info.v4l.minor);	media_dbg(entity->media, "looking up device: %u:%u/n",		  major(devnum), minor(devnum));	device = udev_device_new_from_devnum(udev, 'c', devnum);	if (device) {		p = udev_device_get_devnode(device);		if (p) {			strncpy(entity->devname, p, sizeof(entity->devname));			entity->devname[sizeof(entity->devname) - 1] = '/0';		}		ret = 0;	}	udev_device_unref(device);	return ret;}
开发者ID:jmondi,项目名称:media-ctl,代码行数:28,


示例13: apply_acl_to_devices

/* add or remove a ACL for a given uid from all matching devices */static void apply_acl_to_devices(uid_t uid, int add){	struct udev *udev;	struct udev_enumerate *enumerate;	struct udev_list_entry *list_entry;	/* iterate over all devices tagged with ACL_SET */	udev = udev_new();	enumerate = udev_enumerate_new(udev);	udev_enumerate_add_match_tag(enumerate, "udev-acl");	udev_enumerate_scan_devices(enumerate);	udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) {		struct udev_device *device;		const char *node;		device = udev_device_new_from_syspath(udev_enumerate_get_udev(enumerate),						      udev_list_entry_get_name(list_entry));		if (device == NULL)			continue;		node = udev_device_get_devnode(device);		if (node == NULL) {			udev_device_unref(device);			continue;		}		set_facl(node, uid, add);		udev_device_unref(device);	}	udev_enumerate_unref(enumerate);	udev_unref(udev);}
开发者ID:SaschaMester,项目名称:devuan-udev,代码行数:31,


示例14: udev_new

bool Renderer::connectEmotiv(){   /* Opens Emotiv if Emotiv is only HID Device attached */  struct udev_device *dev;  struct udev *udev;  struct udev_list_entry *devices, *dev_list_entry;  struct udev_enumerate *enumerate;  udev = udev_new();  enumerate = udev_enumerate_new(udev);  udev_enumerate_add_match_subsystem(enumerate, "hidraw");  udev_enumerate_scan_devices(enumerate);  devices = udev_enumerate_get_list_entry(enumerate);  udev_list_entry_foreach(dev_list_entry, devices)     {      const char * path = udev_list_entry_get_name(dev_list_entry);      dev = udev_device_new_from_syspath(udev,path);    }  emotiv_fd = open(udev_device_get_devnode(dev), O_RDONLY);  if (emotiv_fd > 0)     {      int res = read(emotiv_fd, emotivBuffer, 32);      if(res < 0) {perror("read"); return false;}      return true;    }  else     {      perror("Unable to open device");      return false;    }}
开发者ID:jrjeojst,项目名称:WinlabEEG,代码行数:30,


示例15: loader_get_device_name_for_fd

char *loader_get_device_name_for_fd(int fd){   char *device_name = NULL;#ifdef HAVE_LIBUDEV   struct udev *udev;   struct udev_device *device;   const char *const_device_name;   UDEV_SYMBOL(struct udev *, udev_new, (void));   UDEV_SYMBOL(const char *, udev_device_get_devnode,               (struct udev_device *));   UDEV_SYMBOL(struct udev_device *, udev_device_unref,               (struct udev_device *));   UDEV_SYMBOL(struct udev *, udev_unref, (struct udev *));   udev = udev_new();   device = udev_device_new_from_fd(udev, fd);   if (device == NULL)      return NULL;   const_device_name = udev_device_get_devnode(device);   if (!const_device_name)      goto out;   device_name = strdup(const_device_name);out:   udev_device_unref(device);   udev_unref(udev);#endif   return device_name;}
开发者ID:Sonicadvance1,项目名称:mesa,代码行数:31,


示例16: m_gamepadDevices

GamepadController::GamepadController()    : m_gamepadDevices(Nix::Gamepads::itemsLengthCap){    m_udev = udev_new();    m_gamepadsMonitor = udev_monitor_new_from_netlink(m_udev, "udev");    udev_monitor_enable_receiving(m_gamepadsMonitor);    udev_monitor_filter_add_match_subsystem_devtype(m_gamepadsMonitor, "input", 0);    GIOChannel *channel = g_io_channel_unix_new(udev_monitor_get_fd(m_gamepadsMonitor));    g_io_add_watch(channel, GIOCondition(G_IO_IN), static_cast<GIOFunc>(&GamepadController::onGamepadChange), this);    g_io_channel_unref(channel);    struct udev_enumerate* enumerate = udev_enumerate_new(m_udev);    udev_enumerate_add_match_subsystem(enumerate, "input");    udev_enumerate_add_match_property(enumerate, "ID_INPUT_JOYSTICK", "1");    udev_enumerate_scan_devices(enumerate);    struct udev_list_entry* cur;    struct udev_list_entry* devs = udev_enumerate_get_list_entry(enumerate);    udev_list_entry_foreach(cur, devs)    {        const char* devname = udev_list_entry_get_name(cur);        struct udev_device* device = udev_device_new_from_syspath(m_udev, devname);        if (isGamepadDevice(device))            registerDevice(udev_device_get_devnode(device));        udev_device_unref(device);    }    udev_enumerate_unref(enumerate);}
开发者ID:dakerfp,项目名称:drowser,代码行数:29,


示例17: scan_connected_devices

int scan_connected_devices(detector_state_t *state) {	struct udev_list_entry *cursor;	struct udev_enumerate *ue;	struct udev_device *ud;	const char *devnode = NULL;	if( !(ue = udev_enumerate_new(state->u)) )		return 1;	udev_enumerate_add_match_subsystem(ue, "tty");	udev_enumerate_add_match_property(ue, "ID_BUS", "usb");	udev_enumerate_scan_devices(ue);	cursor = udev_enumerate_get_list_entry(ue);	do {		ud = udev_device_new_from_syspath(			state->u, udev_list_entry_get_name(cursor));		if( (devnode = udev_device_get_devnode(ud)) )			spawn_server(state->exec_path, devnode);		udev_device_unref(ud);	} while( (cursor = udev_list_entry_get_next(cursor)) );	udev_enumerate_unref(ue);	return 0;}
开发者ID:flyingoctopus,项目名称:serialosc,代码行数:28,


示例18: set_trackpoint_sensitivity

static void set_trackpoint_sensitivity(struct udev_device *dev, const char *value){        struct udev_device *pdev;        char val_s[DECIMAL_STR_MAX(int)];        int r, val_i;        assert(dev);        assert(value);        /* The sensitivity sysfs attr belongs to the serio parent device */        pdev = udev_device_get_parent_with_subsystem_devtype(dev, "serio", NULL);        if (!pdev) {                log_warning("Failed to get serio parent for '%s'", udev_device_get_devnode(dev));                return;        }        r = safe_atoi(value, &val_i);        if (r < 0) {                log_error("Unable to parse POINTINGSTICK_SENSITIVITY '%s' for '%s'", value, udev_device_get_devnode(dev));                return;        }        xsprintf(val_s, "%d", val_i);        r = udev_device_set_sysattr_value(pdev, "sensitivity", val_s);        if (r < 0)                log_error_errno(r, "Failed to write 'sensitivity' attribute for '%s': %m", udev_device_get_devnode(pdev));}
开发者ID:nazgul77,项目名称:systemd,代码行数:28,


示例19: usb_unmount_dev

static int usb_unmount_dev(const char *devname, struct udev *udev){  struct udev_enumerate *enumerate;  struct udev_list_entry *dev_list, *dev_list_entry;  struct udev_device *device = NULL, *parent_device = NULL;  int device_found = 0;  int retval = 0;  FILE *remfile = NULL;  struct stat buf;  enumerate = udev_enumerate_new(udev);  udev_enumerate_add_match_subsystem(enumerate, "block");  udev_enumerate_scan_devices(enumerate);  dev_list = udev_enumerate_get_list_entry(enumerate);  udev_list_entry_foreach(dev_list_entry, dev_list)  {    device = udev_device_new_from_syspath(udev,                                          udev_list_entry_get_name(dev_list_entry));    if(!strcmp(udev_device_get_devnode(device), devname))    {      device_found = 1;      break;    }    else    {      udev_device_unref(device);      device = NULL;    }  }
开发者ID:x2b,项目名称:usbeject,代码行数:32,


示例20: device_unmount

intdevice_unmount (struct udev_device *dev){    struct device_t *device;    char cmdline[256];    int tries = 10;    device = device_search((char *)udev_device_get_devnode(dev));    /* When using eject the remove command is issued 2 times, one when you      * execute eject and one when you unplug the device. We already have     * destroyed the device the first time so the second time it wont find     * it. So no bitching in the log.                                   */    if (!device) {        return 0;    }    device->mounted = device_is_mounted(device->devnode);    if (device->mounted) {        sprintf(cmdline, UMOUNT_CMD, device->devnode);        do {            if (!system(cmdline))                break;            sleep(2);        } while (tries--);    }    rmdir(device->mountpoint);    device_destroy(device);        return 1;}
开发者ID:vodik,项目名称:ldm,代码行数:33,


示例21: device_new

struct device_t *device_new (struct udev_device *dev){    struct device_t *device;    const char *dev_type;    const char *dev_idtype;       device = malloc(sizeof(struct device_t));    device->udev = dev;    device->devnode = s_strdup(udev_device_get_devnode(dev));    device->filesystem = s_strdup(udev_device_get_property_value(dev, "ID_FS_TYPE"));    dev_type    = udev_device_get_devtype(dev);    dev_idtype  = udev_device_get_property_value(dev, "ID_TYPE");    device->type = DEVICE_UNK;    if (!device->filesystem) {        device_destroy(device);        return NULL;    }    if (!strcmp(dev_type,   "partition")||         !strcmp(dev_type,   "disk")     ||         !strcmp(dev_idtype, "floppy"))  {        device->type = DEVICE_VOLUME;    } else if (!strcmp(dev_idtype, "cd")) {        device->type = DEVICE_CD;    }    if (device->type == DEVICE_UNK) {        device_destroy(device);        return NULL;    }    device->has_media = device_has_media(device);    device->fstab_entry = fstab_search(g_fstab, device);    device->mountpoint = NULL;    if (device->has_media) {        if (device->fstab_entry) {            device->mountpoint = s_strdup(device->fstab_entry->path);        } else {            device->mountpoint = device_create_mountpoint(device);        }    }    device->mounted = device_is_mounted(device->devnode);    if (!device_register(device)) {        device_destroy(device);        return NULL;    }    return device;}
开发者ID:vodik,项目名称:ldm,代码行数:60,


示例22: drm_get_device_name

static char *drm_get_device_name(int fd){   char *device_name = NULL;#ifdef HAVE_LIBUDEV   struct udev *udev;   struct udev_device *device;   struct stat buf;   const char *tmp;   udev = udev_new();   if (fstat(fd, &buf) < 0) {      _eglLog(_EGL_WARNING, "failed to stat fd %d", fd);      goto out;   }   device = udev_device_new_from_devnum(udev, 'c', buf.st_rdev);   if (device == NULL) {      _eglLog(_EGL_WARNING,              "could not create udev device for fd %d", fd);      goto out;   }   tmp = udev_device_get_devnode(device);   if (!tmp)      goto out;   device_name = strdup(tmp);out:   udev_device_unref(device);   udev_unref(udev);#endif   return device_name;}
开发者ID:ChillyWillyGuru,项目名称:RSXGL,代码行数:35,


示例23: loopback_list_get

static int loopback_list_get(MountPoint **head) {        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;        struct udev_list_entry *item = NULL, *first = NULL;        _cleanup_udev_unref_ struct udev *udev = NULL;        int r;        assert(head);        udev = udev_new();        if (!udev)                return -ENOMEM;        e = udev_enumerate_new(udev);        if (!e)                return -ENOMEM;        r = udev_enumerate_add_match_subsystem(e, "block");        if (r < 0)                return r;        r = udev_enumerate_add_match_sysname(e, "loop*");        if (r < 0)                return r;        r = udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL);        if (r < 0)                return r;        r = udev_enumerate_scan_devices(e);        if (r < 0)                return r;        first = udev_enumerate_get_list_entry(e);        udev_list_entry_foreach(item, first) {                MountPoint *lb;                _cleanup_udev_device_unref_ struct udev_device *d;                char *loop;                const char *dn;                d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));                if (!d)                        return -ENOMEM;                dn = udev_device_get_devnode(d);                if (!dn)                        continue;                loop = strdup(dn);                if (!loop)                        return -ENOMEM;                lb = new0(MountPoint, 1);                if (!lb) {                        free(loop);                        return -ENOMEM;                }                lb->path = loop;                LIST_PREPEND(mount_point, *head, lb);        }
开发者ID:nazgul77,项目名称:systemd,代码行数:60,


示例24: wgbm_get_default_fd_for_pattern

intwgbm_get_default_fd_for_pattern(const char *pattern){    struct udev *ud;    struct udev_enumerate *en;    struct udev_list_entry *devices, *entry;    const char *path, *filename;    struct udev_device *device;    int fd;    ud = udev_new();    en = udev_enumerate_new(ud);    udev_enumerate_add_match_subsystem(en, "drm");    udev_enumerate_add_match_sysname(en, pattern);    udev_enumerate_scan_devices(en);    devices = udev_enumerate_get_list_entry(en);    udev_list_entry_foreach(entry, devices) {        path = udev_list_entry_get_name(entry);        device = udev_device_new_from_syspath(ud, path);        filename = udev_device_get_devnode(device);        fd = open(filename, O_RDWR | O_CLOEXEC);        udev_device_unref(device);        if (fd >= 0) {            udev_enumerate_unref(en);            udev_unref(ud);            return fd;        }    }
开发者ID:Sonicadvance1,项目名称:waffle,代码行数:29,


示例25: udev_monitor_get_fd

static monome_t *monitor_attach(detector_state_t *state) {	struct udev_device *ud;	struct pollfd fds[1];	fds[0].fd = udev_monitor_get_fd(state->um);	fds[0].events = POLLIN;	do {		if( poll(fds, 1, -1) < 0 )			switch( errno ) {			case EINVAL:				perror("error in poll()");				exit(1);			case EINTR:			case EAGAIN:				continue;			}		ud = udev_monitor_receive_device(state->um);		/* check if this was an add event.		   "add"[0] == 'a' */		if( *(udev_device_get_action(ud)) == 'a' )			spawn_server(state->exec_path, udev_device_get_devnode(ud));		udev_device_unref(ud);	} while( 1 );}
开发者ID:flyingoctopus,项目名称:serialosc,代码行数:29,


示例26: udev_enumerate_new

void joystick_linux::enumerate_joysticks(udev *p_udev) {	udev_enumerate *enumerate;	udev_list_entry *devices, *dev_list_entry;	udev_device *dev;	enumerate = udev_enumerate_new(p_udev);	udev_enumerate_add_match_subsystem(enumerate,"input");	udev_enumerate_add_match_property(enumerate, "ID_INPUT_JOYSTICK", "1");	udev_enumerate_scan_devices(enumerate);	devices = udev_enumerate_get_list_entry(enumerate);	udev_list_entry_foreach(dev_list_entry, devices) {		const char* path = udev_list_entry_get_name(dev_list_entry);		dev = udev_device_new_from_syspath(p_udev, path);		const char* devnode = udev_device_get_devnode(dev);		if (devnode) {			String devnode_str = devnode;			if (devnode_str.find(ignore_str) == -1) {				joy_mutex->lock();				open_joystick(devnode);				joy_mutex->unlock();			}		}		udev_device_unref(dev);	}	udev_enumerate_unref(enumerate);}
开发者ID:tinystringsentertainment,项目名称:godot,代码行数:31,


示例27: print_record

static void print_record(struct udev_device *device) {        const char *str;        int i;        struct udev_list_entry *list_entry;        printf("P: %s/n", udev_device_get_devpath(device));        str = udev_device_get_devnode(device);        if (str != NULL)                printf("N: %s/n", str + STRLEN("/dev/"));        i = udev_device_get_devlink_priority(device);        if (i != 0)                printf("L: %i/n", i);        udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(device))                printf("S: %s/n",                       udev_list_entry_get_name(list_entry) + STRLEN("/dev/"));        udev_list_entry_foreach(list_entry, udev_device_get_properties_list_entry(device))                printf("E: %s=%s/n",                       udev_list_entry_get_name(list_entry),                       udev_list_entry_get_value(list_entry));        printf("/n");}
开发者ID:martinpitt,项目名称:systemd,代码行数:25,


示例28: udev_node_add

int udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid, int test){	struct udev *udev = udev_device_get_udev(dev);	int i;	int num;	struct udev_list_entry *list_entry;	int err = 0;	info(udev, "creating device node '%s', devnum=%d:%d, mode=%#o, uid=%d, gid=%d/n",	     udev_device_get_devnode(dev),	     major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev)),	     mode, uid, gid);	util_create_path(udev, udev_device_get_devnode(dev));	if (!test)		if (udev_node_mknod(dev, NULL, makedev(0,0), mode, uid, gid) != 0) {			err = -1;			goto exit;		}	/* create all_partitions if requested */	num = udev_device_get_num_fake_partitions(dev);	if (num > 0) {		info(udev, "creating device partition nodes '%s[1-%i]'/n", udev_device_get_devnode(dev), num);		if (!test) {			for (i = 1; i <= num; i++) {				char partitionname[UTIL_PATH_SIZE];				dev_t part_devnum;				snprintf(partitionname, sizeof(partitionname), "%s%d",					 udev_device_get_devnode(dev), i);				partitionname[sizeof(partitionname)-1] = '/0';				part_devnum = makedev(major(udev_device_get_devnum(dev)),						    minor(udev_device_get_devnum(dev)) + i);				udev_node_mknod(dev, partitionname, part_devnum, mode, uid, gid);			}		}	}	/* add node to name index */	name_index(udev, udev_device_get_devpath(dev), udev_device_get_devnode(dev), 1, test);	/* create/update symlinks, add symlinks to name index */	udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(dev)) {		name_index(udev, udev_device_get_devpath(dev), udev_list_entry_get_name(list_entry), 1, test);		update_link(dev, udev_list_entry_get_name(list_entry), test);	}
开发者ID:OPSF,项目名称:uClinux,代码行数:47,


示例29: udev_enumerate_new

QStringList QDeviceDiscovery::scanConnectedDevices(){    QStringList devices;    if (!m_udev)        return devices;    udev_enumerate *ue = udev_enumerate_new(m_udev);    udev_enumerate_add_match_subsystem(ue, "input");    udev_enumerate_add_match_subsystem(ue, "drm");    if (m_types & Device_Mouse)        udev_enumerate_add_match_property(ue, "ID_INPUT_MOUSE", "1");    if (m_types & Device_Touchpad)        udev_enumerate_add_match_property(ue, "ID_INPUT_TOUCHPAD", "1");    if (m_types & Device_Touchscreen)        udev_enumerate_add_match_property(ue, "ID_INPUT_TOUCHSCREEN", "1");    if (m_types & Device_Keyboard) {        udev_enumerate_add_match_property(ue, "ID_INPUT_KEYBOARD", "1");        udev_enumerate_add_match_property(ue, "ID_INPUT_KEY", "1");    }    if (m_types & Device_Tablet)        udev_enumerate_add_match_property(ue, "ID_INPUT_TABLET", "1");    if (udev_enumerate_scan_devices(ue) != 0) {#ifdef QT_QPA_DEVICE_DISCOVERY_DEBUG        qWarning() << "UDeviceHelper scan connected devices for enumeration failed";#endif        return devices;    }    udev_list_entry *entry;    udev_list_entry_foreach (entry, udev_enumerate_get_list_entry(ue)) {        const char *syspath = udev_list_entry_get_name(entry);        udev_device *udevice = udev_device_new_from_syspath(m_udev, syspath);        QString candidate = QString::fromUtf8(udev_device_get_devnode(udevice));        if ((m_types & Device_InputMask) && candidate.startsWith(QLatin1String(QT_EVDEV_DEVICE)))            devices << candidate;        if ((m_types & Device_VideoMask) && candidate.startsWith(QLatin1String(QT_DRM_DEVICE))) {            if (m_types & Device_DRM_PrimaryGPU) {                udev_device *pci = udev_device_get_parent_with_subsystem_devtype(udevice, "pci", 0);                if (pci) {                    if (qstrcmp(udev_device_get_sysattr_value(pci, "boot_vga"), "1") == 0)                        devices << candidate;                }            } else                devices << candidate;        }        udev_device_unref(udevice);    }    udev_enumerate_unref(ue);#ifdef QT_QPA_DEVICE_DISCOVERY_DEBUG    qWarning() << "UDeviceHelper found matching devices" << devices;#endif    return devices;}
开发者ID:3163504123,项目名称:phantomjs,代码行数:59,



注:本文中的udev_device_get_devnode函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ udev_device_get_parent函数代码示例
C++ udev_device_get_action函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。