From 0e4ea02d0a7bc406f0d7ebee20f12d207f01f6c3 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 23 Feb 2010 13:42:55 +0000 Subject: [PATCH] * Use add_debugger_command_etc() for adding the debugger commands. * Added a "devfs_cookie" command. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35581 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/device_manager/devfs.cpp | 38 +++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/system/kernel/device_manager/devfs.cpp b/src/system/kernel/device_manager/devfs.cpp index 4e29f9bac2..43c773af79 100644 --- a/src/system/kernel/device_manager/devfs.cpp +++ b/src/system/kernel/device_manager/devfs.cpp @@ -790,8 +790,8 @@ device_write(void* _cookie, off_t offset, void* buffer, size_t* length) static int dump_node(int argc, char **argv) { - if (argc < 2 || !strcmp(argv[1], "--help")) { - kprintf("usage: %s
\n", argv[0]); + if (argc != 2) { + print_debugger_command_usage(argv[0]); return 0; } @@ -841,6 +841,27 @@ dump_node(int argc, char **argv) } +static int +dump_cookie(int argc, char** argv) +{ + if (argc != 2) { + print_debugger_command_usage(argv[0]); + return 0; + } + + uint64 address; + if (!evaluate_debug_expression(argv[1], &address, false)) + return 0; + + struct devfs_cookie* cookie = (devfs_cookie*)(addr_t)address; + + kprintf("DEVFS COOKIE: %p\n", cookie); + kprintf(" device_cookie: %p\n", cookie->device_cookie); + + return 0; +} + + // #pragma mark - file system interface @@ -1883,14 +1904,23 @@ devfs_std_ops(int32 op, ...) { switch (op) { case B_MODULE_INIT: - add_debugger_command("devfs_node", &dump_node, - "info about a private devfs node"); + add_debugger_command_etc("devfs_node", &dump_node, + "Print info on a private devfs node", + "
\n" + "Prints information on a devfs node given by
.\n", + 0); + add_debugger_command_etc("devfs_cookie", &dump_cookie, + "Print info on a private devfs cookie", + "
\n" + "Prints information on a devfs cookie given by
.\n", + 0); legacy_driver_init(); return B_OK; case B_MODULE_UNINIT: remove_debugger_command("devfs_node", &dump_node); + remove_debugger_command("devfs_cookie", &dump_cookie); return B_OK; default: