Lines Matching refs:exc
54 sm_etype_printf(exc, stream) in sm_etype_printf() argument
55 SM_EXC_T *exc; in sm_etype_printf()
58 size_t n = strlen(exc->exc_type->etype_argformat);
62 for (p = exc->exc_type->etype_printcontext; *p != '\0'; ++p)
97 switch (exc->exc_type->etype_argformat[i])
101 s = exc->exc_argv[i].v_str;
112 exc->exc_argv[i].v_int);
120 exc->exc_argv[i].v_long);
123 sm_exc_write(exc->exc_argv[i].v_exc,
153 SM_EXC_T *exc,
157 sm_etype_os_print(exc, stream) in sm_etype_os_print() argument
158 SM_EXC_T *exc; in sm_etype_os_print()
161 int err = exc->exc_argv[0].v_int;
162 char *syscall = exc->exc_argv[1].v_str;
163 char *sysargs = exc->exc_argv[2].v_str;
247 SM_EXC_T * volatile exc = NULL; local
262 exc = sm_malloc_x(sizeof(SM_EXC_T));
263 exc->sm_magic = SmExcMagic;
264 exc->exc_refcount = 1;
265 exc->exc_type = etype;
266 exc->exc_argv = NULL;
276 exc->exc_argv = argv;
334 if (exc == NULL || argv == NULL)
386 sm_free(exc);
391 return exc;
416 SM_EXC_T *exc; local
420 exc = sm_exc_vnew_x(etype, ap);
422 return exc;
436 sm_exc_free(exc) in sm_exc_free() argument
437 SM_EXC_T *exc; in sm_exc_free()
439 if (exc == NULL)
441 SM_REQUIRE(exc->sm_magic == SmExcMagic);
442 if (exc->exc_refcount == 0)
444 if (--exc->exc_refcount == 0)
448 for (i = 0; (c = exc->exc_type->etype_argformat[i]) != '\0';
455 sm_free(exc->exc_argv[i].v_str);
458 sm_exc_free(exc->exc_argv[i].v_exc);
462 exc->sm_magic = NULL;
463 sm_free(exc->exc_argv);
464 sm_free(exc);
480 sm_exc_match(exc, pattern) in sm_exc_match() argument
481 SM_EXC_T *exc; in sm_exc_match()
484 if (exc == NULL)
486 SM_REQUIRE(exc->sm_magic == SmExcMagic);
487 return sm_match(exc->exc_type->etype_category, pattern);
502 sm_exc_write(exc, stream) in sm_exc_write() argument
503 SM_EXC_T *exc; in sm_exc_write()
506 SM_REQUIRE_ISA(exc, SmExcMagic);
507 exc->exc_type->etype_print(exc, stream);
522 sm_exc_print(exc, stream) in sm_exc_print() argument
523 SM_EXC_T *exc; in sm_exc_print()
526 SM_REQUIRE_ISA(exc, SmExcMagic);
527 exc->exc_type->etype_print(exc, stream);
575 sm_exc_raise_x(exc) in sm_exc_raise_x() argument
576 SM_EXC_T *exc; in sm_exc_raise_x()
578 SM_REQUIRE_ISA(exc, SmExcMagic);
600 (*h)(exc);
612 sm_exc_print(exc, smioerr);
617 SmExcHandler->eh_value = exc;
619 sm_exc_free(exc);
646 SM_EXC_T *exc; local
650 exc = sm_exc_vnew_x(etype, ap);
652 sm_exc_raise_x(exc);