static int record_header_files(void) { char *path; struct stat st; int err = -EIO; path = get_tracing_file("events/header_page"); if (!path) { pr_debug("can't get tracing/events/header_page"); return -ENOMEM; } if (stat(path, &st) < 0) { pr_debug("can't read '%s'", path); goto out; } if (write(output_fd, "header_page", 12) != 12) { pr_debug("can't write header_page\n"); goto out; } if (record_file(path, 8) < 0) { pr_debug("can't record header_page file\n"); goto out; } put_tracing_file(path); path = get_tracing_file("events/header_event"); if (!path) { pr_debug("can't get tracing/events/header_event"); err = -ENOMEM; goto out; } if (stat(path, &st) < 0) { pr_debug("can't read '%s'", path); goto out; } if (write(output_fd, "header_event", 13) != 13) { pr_debug("can't write header_event\n"); goto out; } if (record_file(path, 8) < 0) { pr_debug("can't record header_event file\n"); goto out; } err = 0; out: put_tracing_file(path); return err; }
static int record_saved_cmdline(void) { unsigned int size; char *path; struct stat st; int ret, err = 0; path = get_tracing_file("saved_cmdlines"); if (!path) { pr_debug("can't get tracing/saved_cmdline"); return -ENOMEM; } ret = stat(path, &st); if (ret < 0) { /* not found */ size = 0; if (write(output_fd, &size, 8) != 8) err = -EIO; goto out; } err = record_file(path, 8); out: put_tracing_file(path); return err; }
static int record_ftrace_printk(void) { unsigned int size; char *path; struct stat st; int ret, err = 0; path = get_tracing_file("printk_formats"); if (!path) { pr_debug("can't get tracing/printk_formats"); return -ENOMEM; } ret = stat(path, &st); if (ret < 0) { /* not found */ size = 0; if (write(output_fd, &size, 4) != 4) err = -EIO; goto out; } err = record_file(path, 4); out: put_tracing_file(path); return err; }
static void read_ftrace_printk(void) { unsigned int size, check_size; #else static void read_ftrace_; #endif char *path; struct stat st; int ret; path = get_tracing_file("printk_formats"); ret = stat(path, &st); if (ret < 0) { /* not found */ size = 0; write_or_die(&size, 4); goto out; } size = get_size(path); write_or_die(&size, 4); check_size = copy_file(path); if (size != check_size) die("error in size of file '%s'", path); out: put_tracing_file(path); }
static void read_ftrace_files(struct tracepoint_path *tps) { char *path; path = get_tracing_file("events/ftrace"); copy_event_system(path, tps); put_tracing_file(path); }
DIR *tracing_events__opendir(void) { DIR *dir = NULL; char *path = get_tracing_file("events"); if (path) { dir = opendir(path); put_events_file(path); } return dir; }
static void read_header_files(void) { char *path; struct stat st; path = get_tracing_file("events/header_page"); if (stat(path, &st) < 0) die("can't read '%s'", path); write_or_die("header_page", 12); record_file(path, 8); put_tracing_file(path); path = get_tracing_file("events/header_event"); if (stat(path, &st) < 0) die("can't read '%s'", path); write_or_die("header_event", 13); record_file(path, 8); put_tracing_file(path); }
static void read_header_files(void) { unsigned long long size, check_size; char *path; int fd; path = get_tracing_file("events/header_page"); fd = open(path, O_RDONLY); if (fd < 0) die("can't read '%s'", path); /* unfortunately, you can not stat debugfs files for size */ size = get_size_fd(fd); write_or_die("header_page", 12); write_or_die(&size, 8); check_size = copy_file_fd(fd); close(fd); if (size != check_size) die("wrong size for '%s' size=%lld read=%lld", path, size, check_size); put_tracing_file(path); path = get_tracing_file("events/header_event"); fd = open(path, O_RDONLY); if (fd < 0) die("can't read '%s'", path); size = get_size_fd(fd); write_or_die("header_event", 13); write_or_die(&size, 8); check_size = copy_file_fd(fd); if (size != check_size) die("wrong size for '%s'", path); put_tracing_file(path); close(fd); }
static void read_event_files(struct tracepoint_path *tps) { struct dirent *dent; struct stat st; char *path; char *sys; DIR *dir; int count = 0; int ret; path = get_tracing_file("events"); dir = opendir(path); if (!dir) die("can't read directory '%s'", path); while ((dent = readdir(dir))) { if (dent->d_type != DT_DIR || strcmp(dent->d_name, ".") == 0 || strcmp(dent->d_name, "..") == 0 || strcmp(dent->d_name, "ftrace") == 0 || !system_in_tp_list(dent->d_name, tps)) continue; count++; } write_or_die(&count, 4); rewinddir(dir); while ((dent = readdir(dir))) { if (dent->d_type != DT_DIR || strcmp(dent->d_name, ".") == 0 || strcmp(dent->d_name, "..") == 0 || strcmp(dent->d_name, "ftrace") == 0 || !system_in_tp_list(dent->d_name, tps)) continue; sys = malloc_or_die(strlen(path) + strlen(dent->d_name) + 2); sprintf(sys, "%s/%s", path, dent->d_name); ret = stat(sys, &st); if (ret >= 0) { write_or_die(dent->d_name, strlen(dent->d_name) + 1); copy_event_system(sys, tps); } free(sys); } closedir(dir); put_tracing_file(path); }
static int record_ftrace_files(struct tracepoint_path *tps) { char *path; int ret; path = get_tracing_file("events/ftrace"); if (!path) { pr_debug("can't get tracing/events/ftrace"); return -ENOMEM; } ret = copy_event_system(path, tps); put_tracing_file(path); return ret; }
static void read_ftrace_printk(void) { unsigned int size; char *path; struct stat st; int ret; path = get_tracing_file("printk_formats"); ret = stat(path, &st); if (ret < 0) { /* not found */ size = 0; write_or_die(&size, 4); goto out; } record_file(path, 4); out: put_tracing_file(path); }
static int record_event_files(struct tracepoint_path *tps) { struct dirent *dent; struct stat st; char *path; char *sys; DIR *dir; int count = 0; int ret; int err; path = get_tracing_file("events"); if (!path) { pr_debug("can't get tracing/events"); return -ENOMEM; } dir = opendir(path); if (!dir) { err = -errno; pr_debug("can't read directory '%s'", path); goto out; } for_each_event(dir, dent, tps) { if (strcmp(dent->d_name, "ftrace") == 0 || !system_in_tp_list(dent->d_name, tps)) continue; count++; } if (write(output_fd, &count, 4) != 4) { err = -EIO; pr_debug("can't write count\n"); goto out; } rewinddir(dir); for_each_event(dir, dent, tps) { if (strcmp(dent->d_name, "ftrace") == 0 || !system_in_tp_list(dent->d_name, tps)) continue; if (asprintf(&sys, "%s/%s", path, dent->d_name) < 0) { err = -ENOMEM; goto out; } ret = stat(sys, &st); if (ret >= 0) { ssize_t size = strlen(dent->d_name) + 1; if (write(output_fd, dent->d_name, size) != size || copy_event_system(sys, tps) < 0) { err = -EIO; free(sys); goto out; } } free(sys); } err = 0; out: closedir(dir); put_tracing_file(path); return err; }
size = get_size(path); write_or_die(&size, 4); check_size = copy_file(path); if (size != check_size) die("error in size of file '%s'", path); } //static void read_ftrace_printk(void) //{ ; char *path; struct stat st; int ret; path = get_tracing_file("printk_formats"); ret = stat(path, &st); if (ret < 0) { /* not found */ size = 0; write_or_die(&size, 4); goto out; } size = get_size(path); write_or_die(&size, 4); check_size = copy_file(path); if (size != check_size) die("error in size of file '%s'", path); out: put_tracing_file(path); }