Guest User

Untitled

a guest
Apr 23rd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. #include "../drivers.h"
  2. #include <stdio.h>
  3. #include "../../kernel/ipc.h"
  4. #include "../../kernel/config.h"
  5. #include "../../kernel/type.h"
  6.  
  7. FORWARD _PROTOTYPE( char *s_traps_str, (int flags) );
  8. FORWARD _PROTOTYPE( char *s_flags_str, (int flags) );
  9.  
  10. struct boot_image image[NR_BOOT_PROCS];
  11. void get_bootimage(char *buf, int bufSize) {
  12. int status, i, m, j;
  13. struct boot_image *ip;
  14. static char ipc_to[BITCHUNK_BITS*2];
  15. status = sys_getimage(image);
  16. if (status != OK) {
  17. report("PROC", "warning: couldn't get copy of image table", status);
  18. *buf = '\0';
  19. return;
  20. }
  21. buf+=sprintf(buf,"---name-- -nr- -flags- -traps- -sq- ----pc- -stack- -ipc_to[0]--------\n");
  22. for (m=0; m<NR_BOOT_PROCS; m++) {
  23. ip = &image[m];
  24. for (i=j=0; i < BITCHUNK_BITS; i++, j++) {
  25. ipc_to[j] = (ip->ipc_to & (1<<i)) ? '1' : '0';
  26. if (i % 8 == 7) ipc_to[++j] = ' ';
  27. }
  28. ipc_to[j] = '\0';
  29. buf+=sprintf(buf, "%8s %4d %s %s %3d %7lu %7lu %s\n",
  30. ip->proc_name, ip->proc_nr,
  31. s_flags_str(ip->flags), s_traps_str(ip->trap_mask),
  32. ip->priority, (long)ip->initial_pc, ip->stksize, ipc_to);
  33. }
  34. }
  35. PRIVATE char *s_flags_str(int flags)
  36. {
  37. static char str[10];
  38. str[0] = (flags & PREEMPTIBLE) ? 'P' : '-';
  39. str[1] = '-';
  40. str[2] = (flags & BILLABLE) ? 'B' : '-';
  41. str[3] = (flags & SYS_PROC) ? 'S' : '-';
  42. str[4] = '-';
  43. str[5] = '\0';
  44.  
  45. return str;
  46. }
  47. PRIVATE char *s_traps_str(int flags)
  48. {
  49. static char str[10];
  50. str[0] = (flags & (1 << SEND)) ? 'S' : '-';
  51. str[1] = (flags & (1 << SENDA)) ? 'A' : '-';
  52. str[2] = (flags & (1 << RECEIVE)) ? 'R' : '-';
  53. str[3] = (flags & (1 << SENDREC)) ? 'B' : '-';
  54. str[4] = (flags & (1 << NOTIFY)) ? 'N' : '-';
  55. str[5] = '\0';
  56.  
  57. return str;
  58. }
Add Comment
Please, Sign In to add comment