home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / sys / sgi / bugs / 151 < prev    next >
Encoding:
Text File  |  1993-01-25  |  1.8 KB  |  97 lines

  1. Newsgroups: comp.sys.sgi.bugs
  2. Path: sparky!uunet!think.com!sdd.hp.com!ux1.cso.uiuc.edu!news.cso.uiuc.edu!TheImprov!amys
  3. From: amys@TheImprov.ncsa.uiuc.edu (Amy Swanson)
  4. Subject: m_fork() failure under 4.0.5
  5. Message-ID: <C1F1t1.43H@news.cso.uiuc.edu>
  6. Sender: usenet@news.cso.uiuc.edu (Net Noise owner)
  7. Organization: University of Illinois at Urbana
  8. Date: Mon, 25 Jan 1993 15:31:49 GMT
  9. Lines: 86
  10.  
  11.  
  12. One of my user's has run into a problem since we upgraded our OS to
  13. IRIX 4.0.5C - is this a bug? 
  14.  
  15. Thanks,
  16. Amy
  17.  
  18. =====================
  19. Has anybody had any problems with the subroutine m_fork() since the upgrade
  20. of the OS? I have a simple test program that used to work but failed after 
  21. the upgrade. The source code is included at the end.  Any help would be 
  22. appreciated.
  23.  
  24.  
  25. Chris
  26.  
  27. ----------------------------- test_mfork.c ------------------------------
  28. #include <stdio.h>
  29. #include <sys/types.h>
  30. #include <sys/prctl.h>
  31. #include <ulocks.h>
  32. #include <task.h>
  33. #include <errno.h>
  34.  
  35. #define Min(X,Y) ( (X) < (Y) ? (X) : (Y) )
  36. #define NUM    200000
  37.  
  38. static void compute();
  39.  
  40. static int f[NUM];
  41.  
  42. static int nprocs, chunk;
  43.  
  44. main()
  45. {
  46.     int    i, ret; 
  47.  
  48.     for (i=0; i<NUM; i++)
  49.         f[i] = i;
  50.  
  51.     print_array(f);
  52.  
  53.     nprocs = prctl(PR_MAXPPROCS);
  54.     ret = m_set_procs(nprocs);
  55.     if (ret != 0)
  56.     {
  57.         fprintf(stderr, "m_set_procs returned errno(%d)\n", errno); 
  58.         exit (-1);
  59.     }
  60.     chunk = NUM/nprocs;
  61.  
  62.         ret = m_fork(compute);
  63.     if (ret != 0)
  64.     {
  65.         fprintf(stderr, "m_fork returned errno(%d)\n", errno); 
  66.         exit (-1);
  67.     }
  68.         m_kill_procs();
  69.  
  70.     print_array(f);
  71. }
  72.  
  73. static void compute()
  74. {
  75.     int    i, j, start, end;
  76.  
  77.     while ( (i = m_next()) < nprocs)
  78.     {
  79.         start = i*chunk;
  80.         end = Min((i+1)*chunk, NUM);
  81.         for (j=start; j<end; j++)
  82.         f[j] = j;
  83.     }
  84. }
  85.  
  86. print_array(f)
  87. int *f;
  88. {
  89.     printf("f[] = (%d ... %d)\n", f[0], f[NUM-1]);
  90. }
  91.  
  92. --
  93. =========
  94. Amy K. Swanson
  95. SGI Systems Administrator, NCSA
  96. amys@ncsa.uiuc.edu
  97.