{ "/dev/fb1", FAKEDEV_FB1 },
{ "/dev/fb/1", FAKEDEV_FB1 },
{ "/dev/mmuhack", FAKEDEV_MMUHACK },
- { "/dev/tty", FAKEDEV_TTY0 },
+ { "/dev/tty", FAKEDEV_TTY },
{ "/dev/tty0", FAKEDEV_TTY0 },
+ { "/dev/touchscreen/wm97xx", FAKEDEV_WM97XX },
+ { "/etc/pointercal", FAKEDEV_WM97XX_P },
+ { "/dev/input/mice", -ENODEV },
#ifdef PND
- { "/dev/input/event*", -1 }, // hide for now, may cause dupe events
+ { "/dev/input/event*", -ENODEV }, // hide for now, may cause dupe events
#endif
};
-static long w_open_raw(const char *pathname, int flags, mode_t mode)
+long w_open_raw(const char *pathname, int flags, mode_t mode)
{
long ret;
int i;
}
}
- if (i == ARRAY_SIZE(takeover_devs))
- ret = g_open_raw(pathname, flags, mode);
+ if (i == ARRAY_SIZE(takeover_devs)) {
+ const char *w_path = emu_wrap_path(pathname);
+ ret = g_open_raw(w_path, flags, mode);
+ emu_wrap_path_free(w_path, pathname);
+ }
if (ret >= 0) {
for (i = 0; emu_interesting_fds[i].name != NULL; i++) {
{
long ret;
- if (fd == FAKEDEV_GPIO)
- ret = emu_read_gpiodev(buf, count);
+ if (FAKEDEV_MEM <= fd && fd < FAKEDEV_FD_BOUNDARY)
+ ret = emu_do_read(fd, buf, count);
else
ret = g_read_raw(fd, buf, count);
- //strace("read(%d, %p, %ld) = %ld\n", fd, buf, count, ret);
+ //strace("read(%d, %p, %zd) = %ld\n", fd, buf, count, ret);
return ret;
}
{
long ret;
+#ifndef DL
if (path != NULL && strncmp(path, "/proc/", 6) == 0
&& strcmp(strrchr(path, '/'), "/exe") == 0)
{
ret = bufsiz;
}
else
+#endif
ret = g_readlink_raw(path, buf, bufsiz);
strace("readlink(%s, %s, %zd) = %ld\n", path, buf, bufsiz, ret);