| |
| |
| |
| |
| |
| |
| #include <ntux/ntux.h> |
| #include "ntux_driver_impl.h" |
| #include "ntux_errinfo_impl.h" |
| |
| int ntux_errno(const struct ntux_driver_ctx * dctx) |
| { |
| struct ntux_driver_ctx_impl * ictx; |
| ictx = ntux_get_driver_ictx(dctx); |
| return ictx->errcode; |
| } |
| |
| int ntux_errno_set( |
| const struct ntux_driver_ctx * dctx, |
| int esyscode) |
| { |
| struct ntux_driver_ctx_impl * ictx; |
| |
| ictx = ntux_get_driver_ictx(dctx); |
| ictx->errcode = (esyscode < 0) |
| ? -esyscode |
| : esyscode; |
| |
| return esyscode; |
| } |
| |
| int ntux_record_error( |
| const struct ntux_driver_ctx * dctx, |
| int esyscode, |
| int elibcode, |
| const char * efunction, |
| int eline, |
| unsigned eflags, |
| void * eany) |
| { |
| struct ntux_driver_ctx_impl * ictx; |
| struct ntux_error_info * erri; |
| |
| ictx = ntux_get_driver_ictx(dctx); |
| |
| if (ictx->errinfp == ictx->erricap) |
| return -1; |
| |
| *ictx->errinfp = &ictx->erribuf[ictx->errinfp - ictx->erriptr]; |
| erri = *ictx->errinfp; |
| |
| erri->euctx = ictx->euctx; |
| erri->eunit = ictx->eunit; |
| |
| erri->edctx = dctx; |
| erri->esyscode = esyscode; |
| erri->elibcode = elibcode; |
| erri->efunction = efunction; |
| erri->eline = eline; |
| erri->eflags = eflags; |
| erri->eany = eany; |
| |
| ictx->errinfp++; |
| |
| return -1; |
| } |