C Tips: Generating a Bugcheck; Triggering a System Crash

来源:互联网 发布:武汉网络装修 编辑:程序博客网 时间:2024/04/30 08:52
C Tips: Generating a Bugcheck; Triggering a System Crash
http://64.223.189.234/node/471
Tagged: C  •  OpenVMS  •  OpenVMS Alpha  •  OpenVMS I64  •  Porting  •  Programming  •  Tips

The following describes how to trigger a bugcheck…

By default, a system bugcheck can only be triggered in executive or kernel mode. Outer-mode bugchecks will trigger application exit, but will only trigger a system crash if the OpenVMS system parameter BUGCHEKFATAL is set to promote non-privileged bugcheck requests into system bugchecks.

In a C application, an OpenVMS Alpha routine that calls the bug_check macro looks like this:

#define __NEW_STARLET#include <ssdef.h>#include <starlet.h>#include <stdlib.h>#include <vms_macros.h> /* from sys$lib_c.tlb */int ByeByeBugCheck()  {  bug_check( INCONSTATE, FATAL, COLD );  return SS
C Tips: Generating a Bugcheck; Triggering a System Crash
http://64.223.189.234/node/471
Tagged: C  •  OpenVMS  •  OpenVMS Alpha  •  OpenVMS I64  •  Porting  •  Programming  •  Tips

The following describes how to trigger a bugcheck…

By default, a system bugcheck can only be triggered in executive or kernel mode. Outer-mode bugchecks will trigger application exit, but will only trigger a system crash if the OpenVMS system parameter BUGCHEKFATAL is set to promote non-privileged bugcheck requests into system bugchecks.

In a C application, an OpenVMS Alpha routine that calls the bug_check macro looks like this:

___FCKpd___0

The CC compilation command for the above source code module is CC module_name.c + SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY.

CMKRNL privilege is required for the sys$cmkrnl call.

Both OpenVMS Alpha and OpenVMS I64 also support the following construct:
#include <pal_builtins.h>
void __PAL_BUGCHK( bugcheck_code );

This PAL call replaces the bug_check call shown above, and you'll need to add the required include file.

The __PAL_BUGCHK call is an SRM firmware PAL call on OpenVMS Alpha, and translated into a compiler break directive available within the OpenVMS I64 C compiler. 

BUGCHECK; }main() { unsigned int ArghList[] = { 0 }; int RetStat; RetStat = sys$cmkrnl( ByeByeBugCheck, ArghList); exit( EXIT_FAILURE ); }

The CC compilation command for the above source code module is CC module_name.c + SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY.

CMKRNL privilege is required for the sys$cmkrnl call.

Both OpenVMS Alpha and OpenVMS I64 also support the following construct:
#include <pal_builtins.h>
void __PAL_BUGCHK( bugcheck_code );

This PAL call replaces the bug_check call shown above, and you'll need to add the required include file.

The __PAL_BUGCHK call is an SRM firmware PAL call on OpenVMS Alpha, and translated into a compiler break directive available within the OpenVMS I64 C compiler. 

原创粉丝点击