Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. #include "timer.h"
  2. #include "i8254.h"
  3. #include <limits.h>
  4. #include <string.h>
  5. #include <errno.h>
  6.  
  7. static int proc_args(int argc, char **argv);
  8. static unsigned long parse_ulong(char *str, int base);
  9. static void print_usage(char **argv);
  10.  
  11. int main(int argc, char **argv)
  12. {
  13. /* DO NOT FORGET TO initialize service */
  14. sef_startup();
  15.  
  16. /* Enable IO-sensitive operations for ourselves */
  17. sys_enable_iop(SELF);
  18.  
  19. if (argc == 1) { /* Prints usage of the program if no arguments are passed */
  20. print_usage(argv);
  21. return 0;
  22. }
  23. else return proc_args(argc, argv);
  24. }
  25.  
  26. static void print_usage(char **argv)
  27. {
  28. printf("Usage: one of the following:\n"
  29. "\t service run %s -args \"config <decimal no.- timer>\"\n"
  30. "\t service run %s -args \"square <decimal no. - frequency>\"\n"
  31. "\t service run %s -args \"int <decimal no. - time>\"\n",
  32. argv[0], argv[0], argv[0]);
  33. }
  34.  
  35. static int proc_args(int argc, char **argv)
  36. {
  37. unsigned long ass, num;
  38. unsigned char* leds;
  39.  
  40. //kbd_test_scan()
  41. if (strncmp(argv[1], "config", strlen("config")) == 0) {
  42. if (argc != 3) {
  43. printf("KBD: wrong no. of arguments for kbd_test_scan()\n");
  44. return 1;
  45. }
  46. if (ass = parese_ulong(argv[2], 10) == ULONG_MAX)
  47. return 1;
  48. printf("KBD::kbd_test_scan(%lu)\n", ass);
  49. return kbd_test_scan(ass);
  50. }
  51.  
  52. //kbd_test_leds()
  53. else if (strncmp(argv[1], "Led", strlen("Led")) == 0) {
  54. if (argc != 3) {
  55. printf("KBD: wrong no. of arguments for kbd_test_leds()\n");
  56. return 1;
  57. }
  58.  
  59. num = argc - 2;
  60.  
  61. if (leds == ULONG_MAX)
  62. return 1;
  63. printf("KBD::kbd_test_leds(%lu, leds)\n");
  64. return kbd_test_leds(n, leds);
  65. }
  66. else if (strncmp(argv[1], "int", strlen("int")) == 0) {
  67. if (argc != 3) {
  68. printf("KBD: wrong no of arguments for kbd_test_timed_scan\n");
  69. return 1;
  70. }
  71. time = parse_ulong(argv[2], 10); /* Parses string to unsigned long */
  72. if (time == ULONG_MAX)
  73. return 1;
  74. printf("KBD::kbd_test_timed_scan(%lu)\n");
  75. return kbd_test_timed_scan(n);
  76. }
  77. else {
  78. printf("KBD: %s - no valid function!\n", argv[1]);
  79. return 1;
  80. }
  81. }
  82.  
  83. static unsigned long parse_ulong(char *str, int base)
  84. {
  85. char *endptr;
  86. unsigned long val;
  87.  
  88. /* Convert string to unsigned long */
  89. val = strtoul(str, &endptr, base);
  90.  
  91. /* Check for conversion errors */
  92. if ((errno == ERANGE && val == ULONG_MAX) || (errno != 0 && val == 0)) {
  93. perror("strtoul");
  94. return ULONG_MAX;
  95. }
  96.  
  97. if (endptr == str) {
  98. printf("timer: parse_ulong: no digits were found in %s\n", str);
  99. return ULONG_MAX;
  100. }
  101.  
  102. /* Successful conversion */
  103. return val;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement