Why does TaskSpawn take ints instead of void*?
<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>