Esempio n. 1
0
static void
close_device (ply_renderer_backend_t *backend)
{
  ply_trace ("closing device");

  free_heads (backend);

  ply_terminal_stop_watching_for_active_vt_change (backend->terminal,
                                                   (ply_terminal_active_vt_changed_handler_t)
                                                   on_active_vt_changed,
                                                   backend);

  unload_driver (backend);
}
Esempio n. 2
0
int wifi_handler(WINDOW *win, void *ptr)
{
	CDKSCREEN *screen;

	screen = initCDKScreen(win);

	load_driver();

	show_info(screen);

	unload_driver();

	destroyCDKScreen(screen);

	return 0;
}
Esempio n. 3
0
CRYSTAX_LOCAL
int umount(const char *target, int flags)
{
    DBG("target=%s, flags=%d", target, flags);

    if (target == NULL || *target == '\0')
    {
        ERR("empty target");
        errno = EINVAL;
        return -1;
    }

    scope_lock_t lock(mount_table_mutex);

    abspath_t abspath(target);
    for (size_t i = mount_table_pos; i > 0; --i)
    {
        driver_t *d = mount_table[i - 1];
        if (d->root().length() > abspath.length() && d->root().subpath(abspath))
        {
            ERR("unmount failed: %s busy", abspath.c_str());
            errno = EBUSY;
            return -1;
        }
        if (d->root() == abspath)
        {
            DBG("unmount target %s", abspath.c_str());
            unload_driver(d);
            // Shift above records
            for (size_t j = i - 1; j < (size_t)mount_table_pos - 1; ++j)
                mount_table[j] = mount_table[j + 1];
            --mount_table_pos;
            return 0;
        }
    }

    return system_umount2(target, flags);
}