Subject: Re: kernel panic messages
To: NetBSD Kernel Technical Discussion List <tech-kern@netbsd.org>
From: Ian Piumarta <ian.piumarta@inria.fr>
List: tech-kern
Date: 05/04/2003 22:37:38
On Sun, 4 May 2003, Greg A. Woods wrote:

> 	#define panic(varags)	{ _panic_setup(__FILE__, __LINE__); _panic varargs; }
> 	panic(("help! %s", message));

I used to do error messages like that until I got fed up of typing all
those parens.  These days I prefer something like this...


#include <stdio.h>
#include <stdarg.h>

const char   *_panic_file= 0;
unsigned int  _panic_line= 0;

void _panic(const char *fmt, ...)
{
  va_list ap;
  va_start(ap, fmt);
  printf("%s:%d: ", _panic_file, _panic_line);
  vprintf(fmt, ap);
  printf("\n");
  va_end(ap);
}

#define panic	(_panic_file= __FILE__, _panic_line= __LINE__, _panic)

int main()
{
  panic("help! %d", 42);
  return 0;
}


...which (ANSI prototypes notwithstanding) works with even the most
ancient of C compilers.

Ian