Talk:L4Re error handling

From TUDOS-Wiki
Revision as of 14:36, 25 July 2012 by Gilbert (talk | contribs) (link to mag main.cc)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

DRAFT

  • interresting files ./l4sys/include/err.h, ./l4util/include/assert.h, ./l4re/include/error_helper, ./l4sys/lib/src/errtostr.c, ./cxx/lib/util/src/ipc_error_str.cc, ./cxx/lib/base/include/exceptions, ./cxx/lib/base/include/std_exc_io, ./moe/server/src/exception.cc, ./moe/server/src/exception.h, many files containing "debug", ./l4sys/include/ARCH-*/kdebug.h
  • BD: JDB, the kernel debugger, could be relevant in so far that you could mention enter_kdebug().
    • usage: enter_kdebug("some message which helps others to find this call and see some state");
    • enters jdb, prints this message
    • NO jdb documentation at this time and place (BD: do you mean there's no documentation available? The basics in http://os.inf.tu-dresden.de/fiasco/doc/jdb.pdf are still valid.)
  • common types which can represent error conditions: l4_cap_idx_t, Cap, l4_msgtag_t
  • l4_cap_idx_t and Cap are very similar, cause Cap is a wrapper for l4_cap_idx_t
    • can be invalid
    • check l4_cap_idx_t with l4_is_invalid_cap and l4_is_valid_cap
    • check Cap with L4::Cap_base::is_valid
    • TODO where and when do we use L4::Cap_base::validate?
    • how to handle? log! also: don't support the feature which needs access to this capability... generally this means end the task
  • l4_msgtag_t
    • some error conditions
    • many methods to check for more or less specific errors
    • TODO talk to someone, grep code
    • Message Tag l4_msgtag_has_error and more
    • Error handling l4_ipc_error, l4_error and more specific ones, most specific seams to be l4_ipc_error_code
    • how to handle: log! depends on specific error. often task configuration error, so end task or don't provide feature


  • C++ Exceptions
    • chksys for l4_msgtag_t and long
    • chkcap for Cap<T>
    • throw some L4::Base_exception
    • has a method returning a "human readable" string! L4::Base_exception::str
    • exceptions can be printed with std::ostream
    • you can put try { } catch(e) { std::cerr << e } in your thread functions like main
    • useful usage seen in mag/server/src/main.cc


  • ./l4sys/lib/src/errtostr.c
    • l4sys_errtostr(long) for L4_E* and L4_IPC_* constants
  • ./cxx/lib/util/src/ipc_error_str.cc
    • TODO too funny
  • TODO grep for usage