int kerfs_icache_report(int direction, void *param, size_t size, size_t offset, size_t length, unsigned char *buf) { size_t current = 0; KERFS_PRINTF(offset, length, buf, current, "icache load: %d%%\n", (100 * hash_count(icache)) / hash_length(icache)); KERFS_PRINTF(offset, length, buf, current, "IN USE %d, DIRTY %d, LRU LEN %d, TOTAL CACHED %d\n", ic_inuse->count, ic_dirty->count, ic_lru->count, icache->count); return current; }
int kerfs_int_report(int direction, void *param, size_t size, size_t offset, size_t length, unsigned char *buf) { size_t current = 0; KERFS_PRINTF(offset, length, buf, current, "INT: # CALLS\tMIN\t MAX\t MEAN\n"); for(int i = 0; i < 256; i++) { if(!interrupt_counts[i]) continue; KERFS_PRINTF(offset, length, buf, current, "%3d: %-5d\n " "| 1 -> %9d\t%9d\t%9d\n ", i, interrupt_counts[i], interrupt_timers[i].runs > 0 ? (uint32_t)interrupt_timers[i].min / 1000 : 0, (uint32_t)interrupt_timers[i].max / 1000, (uint32_t)interrupt_timers[i].mean / 1000); } return current; }
int kerfs_frames_report(int direction, void *param, size_t size, size_t offset, size_t length, unsigned char *buf) { size_t current = 0; for (size_t i = 0; i < maximum_page_number; i++) { size_t count = atomic_load(&frames[i].count); if (count) { KERFS_PRINTF(offset, length, buf, current, "page %8d: %d\n", i, count); } } return current; }
static void __kfs_mnt_rp_write(struct linkedentry *entry, void *__data) { struct filesystem *fs = entry->obj; struct __kfs_data *data = __data; char *point = fs->pointname; if(current_process->root->filesystem == fs) point = "/"; KERFS_PRINTF((*data->offset), data->length, data->buffer, (*data->current), "%s %s %s active,0x%x 0 0\n", fs->nodename, point, fs->type, fs->opts); }
int kerfs_mount_report(int direction, void *param, size_t size, size_t offset, size_t length, unsigned char *buf) { size_t current = 0; struct __kfs_data data = { .offset = &offset, .length = length, .current = ¤t, .buffer = buf }; KERFS_PRINTF(offset, length, buf, current, "DEVICE MTPOINT TYPE OPTIONS\n"); linkedlist_apply_data(&fslist, __kfs_mnt_rp_write, &data); return current; }