static int edac_create_debug_nodes(struct mem_ctl_info *mci) { struct dentry *d, *parent; char name[80]; int i; if (!edac_debugfs) return -ENODEV; d = debugfs_create_dir(mci->dev.kobj.name, edac_debugfs); if (!d) return -ENOMEM; parent = d; for (i = 0; i < mci->n_layers; i++) { sprintf(name, "fake_inject_%s", edac_layer_name[mci->layers[i].type]); d = debugfs_create_u8(name, S_IRUGO | S_IWUSR, parent, &mci->fake_inject_layer[i]); if (!d) goto nomem; } d = debugfs_create_bool("fake_inject_ue", S_IRUGO | S_IWUSR, parent, &mci->fake_inject_ue); if (!d) goto nomem; d = debugfs_create_u16("fake_inject_count", S_IRUGO | S_IWUSR, parent, &mci->fake_inject_count); if (!d) goto nomem; d = debugfs_create_file("fake_inject", S_IWUSR, parent, &mci->dev, &debug_fake_inject_fops); if (!d) goto nomem; mci->debugfs = parent; return 0; nomem: debugfs_remove(mci->debugfs); return -ENOMEM; }
struct dentry *esp_dump_var(const char *name, struct dentry *parent, void *value, esp_type type) { struct dentry *rc = NULL; umode_t mode = 0644; if(!esp_debugfs_root) return NULL; if(!parent) parent = esp_debugfs_root; switch(type) { case ESP_U8: rc = debugfs_create_u8(name, mode, parent, (u8*)value); break; case ESP_U16: rc = debugfs_create_u16(name, mode, parent, (u16*)value); break; case ESP_U32: rc = debugfs_create_u32(name, mode, parent, (u32*)value); break; case ESP_U64: rc = debugfs_create_u64(name, mode, parent, (u64*)value); break; case ESP_BOOL: rc = debugfs_create_bool(name, mode, parent, (u32*)value); break; default: //32 rc = debugfs_create_u32(name, mode, parent, (u32*)value); } if (!rc) goto Fail; else return rc; Fail: debugfs_remove_recursive(esp_debugfs_root); esp_debugfs_root = NULL; esp_dbg(ESP_DBG_ERROR, "%s failed, debugfs root removed; var name: %s\n", __FUNCTION__, name); return NULL; }
/* * ext4_snapshot_create_debugfs_entry - register ext4 debug hooks * Void function doesn't return error if debug hooks are not registered. */ void ext4_snapshot_create_debugfs_entry(void) { int i; ext4_debugfs_dir = debugfs_create_dir("ext4", NULL); if (!ext4_debugfs_dir) return; snapshot_debug = debugfs_create_u8("snapshot-debug", S_IRUGO|S_IWUSR, ext4_debugfs_dir, &snapshot_enable_debug); snapshot_version = debugfs_create_blob("snapshot-version", S_IRUGO, ext4_debugfs_dir, &snapshot_version_blob); for (i = 0; i < SNAPSHOT_TESTS_NUM && i < SNAPSHOT_TEST_NAMES; i++) snapshot_test[i] = debugfs_create_u16(snapshot_test_names[i], S_IRUGO|S_IWUSR, ext4_debugfs_dir, &snapshot_enable_test[i]); #ifdef CONFIG_EXT4_FS_SNAPSHOT_JOURNAL_CACHE cow_cache = debugfs_create_u8("cow-cache", S_IRUGO, ext4_debugfs_dir, &cow_cache_offset); #endif }
static int dp_debugfs_init(struct data_path *dp) { char buf[256]; char path[256]; dp->dentry = debugfs_create_dir(dp->name ? dp->name : "dp", dp_debugfs_root_dir); if (!dp->dentry) return -ENOMEM; snprintf(path, sizeof(path), "../../../%s", dentry_path_raw(dp->rbctl->rbdir, buf, sizeof(buf))); if (IS_ERR_OR_NULL(debugfs_create_symlink( "shm", dp->dentry, path))) goto error; if (IS_ERR_OR_NULL(debugfs_create_file( "tx_q", S_IRUGO, dp->dentry, dp, &fops_tx_q))) goto error; if (IS_ERR_OR_NULL(debugfs_create_file( "stat", S_IRUGO, dp->dentry, dp, &fops_stat))) goto error; if (IS_ERR_OR_NULL(debugfs_create_file( "wm", S_IRUGO | S_IWUSR, dp->dentry, dp, &fops_wm))) goto error; if (IS_ERR_OR_NULL(debugfs_create_bool( "enable_piggyback", S_IRUGO | S_IWUSR, dp->dentry, &dp->enable_piggyback))) goto error; if (IS_ERR_OR_NULL(debugfs_create_bool( "is_tx_stopped", S_IRUGO | S_IWUSR, dp->dentry, &dp->is_tx_stopped))) goto error; if (IS_ERR_OR_NULL(debugfs_create_u32( "tx_q_max_len", S_IRUGO | S_IWUSR, dp->dentry, &dp->tx_q_max_len))) goto error; if (IS_ERR_OR_NULL(debugfs_create_u16( "max_tx_shots", S_IRUGO | S_IWUSR, dp->dentry, &dp->max_tx_shots))) goto error; if (IS_ERR_OR_NULL(debugfs_create_u16( "max_rx_shots", S_IRUGO | S_IWUSR, dp->dentry, &dp->max_rx_shots))) goto error; if (IS_ERR_OR_NULL(debugfs_create_u16( "tx_sched_delay_in_ms", S_IRUGO | S_IWUSR, dp->dentry, &dp->tx_sched_delay_in_ms))) goto error; if (IS_ERR_OR_NULL(debugfs_create_u16( "tx_q_min_sched_len", S_IRUGO | S_IWUSR, dp->dentry, &dp->tx_q_min_sched_len))) goto error; return 0; error: debugfs_remove_recursive(dp->dentry); dp->dentry = NULL; return -1; }