git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: nearly complete POSIX.1-2008 compliant terminal interface implementation
[lunaix-os.git]
/
lunaix-os
/
kernel
/
device
/
device.c
diff --git
a/lunaix-os/kernel/device/device.c
b/lunaix-os/kernel/device/device.c
index 87657551eb50a0e5a3ac42a257d712ad8e011344..cce51b19dbec4aaf9c3bbc9b94a0e8bddc18b018 100644
(file)
--- a/
lunaix-os/kernel/device/device.c
+++ b/
lunaix-os/kernel/device/device.c
@@
-20,8
+20,7
@@
struct devclass default_devclass = {};
void
device_setname_vargs(struct device* dev, char* fmt, va_list args)
{
void
device_setname_vargs(struct device* dev, char* fmt, va_list args)
{
- size_t strlen =
- ksnprintfv(dev->name_val, fmt, DEVICE_NAME_SIZE, args);
+ size_t strlen = ksnprintfv(dev->name_val, fmt, DEVICE_NAME_SIZE, args);
dev->name = HSTR(dev->name_val, strlen);
dev->name = HSTR(dev->name_val, strlen);
@@
-70,6
+69,7
@@
device_create(struct device* dev,
llist_init_head(&dev->children);
mutex_init(&dev->lock);
llist_init_head(&dev->children);
mutex_init(&dev->lock);
+ iopoll_init_evt_q(&dev->pollers);
}
struct device*
}
struct device*
@@
-201,6
+201,13
@@
device_cast(void* obj)
return NULL;
}
return NULL;
}
+void
+device_alert_poller(struct device* dev, int poll_evt)
+{
+ dev->poll_evflags = poll_evt;
+ iopoll_wake_pollers(&dev->pollers);
+}
+
__DEFINE_LXSYSCALL3(int, ioctl, int, fd, int, req, va_list, args)
{
int errno = -1;
__DEFINE_LXSYSCALL3(int, ioctl, int, fd, int, req, va_list, args)
{
int errno = -1;