Add code to work as a kernel module. Builds now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20001 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
#ifdef _KERNEL_MODE
|
#ifdef _KERNEL_MODE
|
||||||
#include <Drivers.h>
|
#include <Drivers.h>
|
||||||
#include <KernelExport.h>
|
#include <KernelExport.h>
|
||||||
|
#include <module.h>
|
||||||
#endif
|
#endif
|
||||||
#include <OS.h>
|
#include <OS.h>
|
||||||
#include <image.h>
|
#include <image.h>
|
||||||
@@ -8,15 +9,24 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
/* as driver or module */
|
||||||
|
//#define AS_DRIVER 1
|
||||||
|
|
||||||
/* do we reboot on loose ? */
|
/* do we reboot on loose ? */
|
||||||
//#define FAIL_IN_BSOD_CAUSE_REBOOT
|
//#define FAIL_IN_BSOD_CAUSE_REBOOT 1
|
||||||
|
|
||||||
/* shortcut to be able to exit (and take a screenshot) */
|
/* shortcut to be able to exit (and take a screenshot) */
|
||||||
#define CAN_EXIT_ON_HYPHEN
|
#define CAN_EXIT_ON_DASH
|
||||||
|
|
||||||
#define MAX_FAILS_BEFORE_BSOD 0
|
#define MAX_FAILS_BEFORE_BSOD 0
|
||||||
|
|
||||||
|
#ifdef __HAIKU__
|
||||||
|
#define FORTUNE_FILE "/etc/fortunes/default/Fortunes"
|
||||||
|
#else
|
||||||
#define FORTUNE_FILE "/etc/fortunes/default"
|
#define FORTUNE_FILE "/etc/fortunes/default"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define KCMD_HELP "A funny KDL hangman game :-)"
|
||||||
|
|
||||||
#define DEV_ENTRY "misc/hangman"
|
#define DEV_ENTRY "misc/hangman"
|
||||||
|
|
||||||
@@ -182,7 +192,7 @@ int play_hangman(void)
|
|||||||
str = bigbuffer;
|
str = bigbuffer;
|
||||||
PRINTF("buffer:%s\n", str);
|
PRINTF("buffer:%s\n", str);
|
||||||
}
|
}
|
||||||
#ifdef CAN_EXIT_ON_HYPHEN
|
#ifdef CAN_EXIT_ON_DASH
|
||||||
if (str[0] == '-') /* emergency exit */
|
if (str[0] == '-') /* emergency exit */
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -233,9 +243,6 @@ int play_hangman(void)
|
|||||||
|
|
||||||
#ifdef _KERNEL_MODE /* driver parts */
|
#ifdef _KERNEL_MODE /* driver parts */
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int dummy;
|
|
||||||
} cookie_t;
|
|
||||||
|
|
||||||
#ifndef __HAIKU__ /* BeOS intimacy revealed */
|
#ifndef __HAIKU__ /* BeOS intimacy revealed */
|
||||||
//char *bsod_wrapper_gets(char *p, int len)
|
//char *bsod_wrapper_gets(char *p, int len)
|
||||||
@@ -276,6 +283,12 @@ PRINTF("score %d\n", score);
|
|||||||
return B_KDEBUG_QUIT;
|
return B_KDEBUG_QUIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ifdef AS_DRIVER
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int dummy;
|
||||||
|
} cookie_t;
|
||||||
|
|
||||||
const char * device_names[]={DEV_ENTRY, NULL};
|
const char * device_names[]={DEV_ENTRY, NULL};
|
||||||
|
|
||||||
status_t init_hardware(void) {
|
status_t init_hardware(void) {
|
||||||
@@ -289,7 +302,7 @@ status_t init_driver(void) {
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
get_image_symbol(KERNEL_IMAGE_ID, "bsod_gets", B_SYMBOL_TYPE_ANY, (void **)&bsod_gets);
|
get_image_symbol(KERNEL_IMAGE_ID, "bsod_gets", B_SYMBOL_TYPE_ANY, (void **)&bsod_gets);
|
||||||
add_debugger_command("kdlhangman", kdlhangman, "A funny KDL hangman game :-)");
|
add_debugger_command("kdlhangman", kdlhangman, KCMD_HELP);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,7 +372,34 @@ device_hooks *find_device(const char *name) {
|
|||||||
return &khangman_hooks;
|
return &khangman_hooks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# else /* as module */
|
||||||
|
|
||||||
|
status_t std_ops(int32 op, ...)
|
||||||
|
{
|
||||||
|
switch (op) {
|
||||||
|
case B_MODULE_INIT:
|
||||||
|
if (init_words(FORTUNE_FILE) < B_OK) {
|
||||||
|
dprintf("hangman: error reading fortune file.\n");
|
||||||
|
return B_ERROR;
|
||||||
|
}
|
||||||
|
add_debugger_command("kdlhangman", kdlhangman, KCMD_HELP);
|
||||||
|
return B_OK;
|
||||||
|
case B_MODULE_UNINIT:
|
||||||
|
remove_debugger_command("kdlhangman", kdlhangman);
|
||||||
|
return B_ERROR;
|
||||||
|
}
|
||||||
|
return B_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
static module_info minfo = {
|
||||||
|
"debugger/hangman/v1",
|
||||||
|
B_KEEP_LOADED,
|
||||||
|
&std_ops
|
||||||
|
};
|
||||||
|
|
||||||
|
module_info *modules[] = { &minfo, NULL };
|
||||||
|
|
||||||
|
# endif /* AS_DRIVER */
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user