libk  Hex Artifact Content

Artifact 97dcae51953ede0a749207eff0df724319d3bb1c8eb8c9c8c43f2396b72040e0:


0000: 23 69 6e 63 6c 75 64 65 20 3c 6b 2f 63 6f 72 65  #include <k/core
0010: 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6b 2f  .h>.#include <k/
0020: 74 79 70 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65  type.h>.#include
0030: 20 3c 6b 2f 69 6e 74 65 72 6e 61 6c 2e 65 67 72   <k/internal.egr
0040: 6f 75 70 2e 68 3e 0a 0a 6b 65 72 72 6f 72 20 6b  oup.h>..kerror k
0050: 65 78 70 6c 61 69 6e 28 6b 63 6f 6e 64 20 76 61  explain(kcond va
0060: 6c 29 20 7b 0a 09 6b 63 6f 6e 64 20 69 64 78 20  l) {..kcond idx 
0070: 3d 20 76 61 6c 20 2f 20 6b 67 6c 6f 62 61 6c 5f  = val / kglobal_
0080: 6d 6f 64 75 6c 65 5f 6f 66 66 73 65 74 3b 0a 09  module_offset;..
0090: 2f 2a 20 6d 6f 64 75 6c 65 20 69 6e 64 65 78 20  /* module index 
00a0: 69 6e 20 74 61 62 6c 65 20 2a 2f 0a 09 6b 63 6f  in table */..kco
00b0: 6e 64 20 6f 66 66 73 65 74 20 3d 20 76 61 6c 20  nd offset = val 
00c0: 25 20 6b 67 6c 6f 62 61 6c 5f 6d 6f 64 75 6c 65  % kglobal_module
00d0: 5f 6f 66 66 73 65 74 3b 0a 09 2f 2a 20 65 72 72  _offset;../* err
00e0: 6f 72 20 69 6e 64 65 78 20 69 6e 20 6d 6f 64 75  or index in modu
00f0: 6c 65 20 65 72 72 6f 72 20 74 61 62 6c 65 20 2a  le error table *
0100: 2f 0a 0a 09 73 74 72 75 63 74 20 6b 67 6c 6f 62  /...struct kglob
0110: 61 6c 5f 6d 6f 64 75 6c 65 5f 72 65 63 6f 72 64  al_module_record
0120: 2a 20 72 65 63 20 3d 20 6b 67 6c 6f 62 61 6c 5f  * rec = kglobal_
0130: 6d 6f 64 75 6c 65 5f 69 64 65 6e 74 20 2b 20 69  module_ident + i
0140: 64 78 3b 0a 09 2f 2a 20 72 65 74 72 69 65 76 65  dx;../* retrieve
0150: 20 6d 6f 64 75 6c 65 20 69 64 65 6e 74 69 74 79   module identity
0160: 20 66 72 6f 6d 20 67 6c 6f 62 61 6c 20 74 61 62   from global tab
0170: 6c 65 20 2a 2f 0a 0a 09 6b 65 72 72 6f 72 20 6b  le */...kerror k
0180: 20 3d 20 7b 0a 09 09 2e 6d 6f 64 75 6c 65 5f 6e   = {....module_n
0190: 61 6d 65 20 3d 20 72 65 63 20 2d 3e 20 6e 61 6d  ame = rec -> nam
01a0: 65 2c 0a 09 09 2e 6d 6f 64 75 6c 65 5f 64 65 73  e,....module_des
01b0: 63 20 3d 20 72 65 63 20 2d 3e 20 64 65 73 63 2c  c = rec -> desc,
01c0: 0a 09 09 2e 65 72 72 6f 72 5f 73 74 72 69 6e 67  ....error_string
01d0: 20 3d 20 72 65 63 20 2d 3e 20 65 72 72 6f 72 5f   = rec -> error_
01e0: 6c 69 73 74 5b 6f 66 66 73 65 74 5d 2c 0a 09 09  list[offset],...
01f0: 2e 63 6f 6e 64 20 3d 20 76 61 6c 2c 0a 09 7d 3b  .cond = val,..};
0200: 0a 0a 09 72 65 74 75 72 6e 20 6b 3b 0a 7d 0a     ...return k;.}.