title: Why does TaskSpawn take ints instead of void*?
body: <p>For the vxWorks operating system, they provide a system library for spawning tasks:</p>
  
  <pre><code>int taskSpawn
      (
      char *  name,             /* name of new task (stored at pStackBase) */
      int     priority,         /* priority of new task */
      int     options,          /* task option word */
      int     stackSize,        /* size (bytes) of stack needed plus name */
      FUNCPTR entryPt,          /* entry point of new task */
      int     arg1,             /* 1st of 10 req'd task args to pass to func */
      int     arg2,
      int     arg3,
      int     arg4,
      int     arg5,
      int     arg6,
      int     arg7,
      int     arg8,
      int     arg9,
      int     arg10
      )
  </code></pre>
  
  <p>You can see how limited this is compared to something like std::thread.<br>
  Normally, I could pass in the appropriate arguments based on the entry function.  </p>
  
  <hr>
  
  <p>Given that this is a C function, I was curious if there was a reason that vxWorks choose to have arguments 1-10 be ints instead of void pointers.  </p>
  
  <p>If they were void pointers, I would be able to pass in any type, and then cast it back inside the entry function.   </p>
  
  <p>If I wanted to pass a pointer of <code>struct foo</code> into the entry function given to taskSpawn, could it be converted to an integer, and then back to the appropriate pointer?<br>
  <strong>Based on the design of this function, am I forced to use globals?</strong> </p>