home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / unix / emx / test / sbrktest.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-29  |  2.2 KB  |  87 lines

  1. /* sbrktest.c (emx+gcc) */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. #define FALSE 0
  8. #define TRUE  1
  9.  
  10. int main (void)
  11. {
  12.   char buf[256], *p, *mem;
  13.   int i, n, fill_flag, read_flag, write_flag, size;
  14.  
  15.   fill_flag = FALSE; read_flag = FALSE; write_flag = FALSE;
  16.   mem = NULL;
  17.   for (;;)
  18.     {
  19.       n = (int)sbrk (0);
  20.       printf ("sbrk = %d\n", n);
  21.       n = (int)ulimit (3, 0);
  22.       printf ("ulimit (3, 0) = %d\n", n);
  23.       printf ("? ");
  24.       if (fgets (buf, sizeof (buf), stdin) == NULL)
  25.         return (0);
  26.       p = strchr (buf, '\n');
  27.       if (p != NULL) *p = 0;
  28.       switch (buf[0])
  29.         {
  30.         case 'q':
  31.           return (0);
  32.         case 'F':
  33.           fill_flag = !fill_flag;
  34.           printf ("Fill = %s\n", (fill_flag ? "on" : "off"));
  35.           break;
  36.         case 'R':
  37.           read_flag = !read_flag;
  38.           printf ("Read = %s\n", (read_flag ? "on" : "off"));
  39.           break;
  40.         case 'W':
  41.           write_flag = !write_flag;
  42.           printf ("Write = %s\n", (write_flag ? "on" : "off"));
  43.           break;
  44.         case 'r':
  45.           printf ("read -> 0x%.2x\n", *mem);
  46.           break;
  47.         case 'w':
  48.           *mem = 'X';
  49.           break;
  50.         case 'f':
  51.           memset (mem, '*', size);
  52.           break;
  53.         case '=':
  54.           i = atoi (buf+1);
  55.           p = brk ((void *)i);
  56.           if ((int)p == 0)
  57.             printf ("ok.\n");
  58.           else
  59.             perror ("brk");
  60.           break;
  61.         case '0': case '1': case '2': case '3': case '4':
  62.         case '5': case '6': case '7': case '8': case '9': case '-':
  63.           size = atoi (buf);
  64.           mem = sbrk (size);
  65.           if ((int)mem == -1)
  66.             perror ("sbrk");
  67.           else
  68.             {
  69.               printf ("ok.\n");
  70.               if (size > 0)
  71.                 {
  72.                   if (read_flag)
  73.                     printf ("read -> 0x%.2x\n", *mem);
  74.                   if (write_flag)
  75.                     *mem = 'X';
  76.                   if (fill_flag)
  77.                     memset (mem, '*', size);
  78.                 }
  79.             }
  80.           break;
  81.         default:
  82.           printf ("Pardon?\n");
  83.           break;
  84.         }
  85.     }
  86. }
  87.