On Monday 14 March 2005 08:57 pm, Daniel Eischen wrote: > On Mon, 14 Mar 2005, Michael C. Shultz wrote: > > Hi, I've just reached a point in a program I'm writing where I'd > > like to do threading. > > > > When I try to start a thread like this: > > > > pthread_create(&thread, &attr, MGPMrUpgrade, property ); > > ^^^^^^^^ &property > > You should compile with -Wall and get rid of any warnings. > > > where property is a structure of many variables it doesn't get > > passed to the function. If I do this: > > > > pthread_create(&thread, &attr, MGPMrUpgrade( &property ), NULL ); > > That looks like it will actuall call MGPMrUpgrade() and use its > return value as the function pointer. > > > It works, but just seems wrong. > > > > Can anyone point me to a source file, preferably in /usr/src > > somewhere that passes a structure to a function being run as a > > thread so I may study the proper way to do this? > > src/lib/libpthread/test/sem_d.c > src/lib/libpthread/test/mutex_d.c > src/lib/libpthread/test/sigwait_d.c > > I'd suggest getting Butenhof's "Programming with POSIX Threads" book.
Daniel, sorry to bother you again but I ran into something that is either a bug or I am missing a vital piece of information somewhere. Here is the situation: this works perfectly because I moved MGPMrUpgrade into the same .c file so it would be a static function: structProperty* property; pthread_t threads[NTHREADS]; pthread_create( &threads[0], NULL, zzMGPMrUpgrade, property ); When I use MGPMrUpgrade from a shared library the function runs yet property isn't being passed! I remember from assembly days that there were some stack tricks to be done when making calls to a shared library in order to pass the parameters, I forget what they are (been ages since I did assembly programming) but anyways it seems like with gcc passing the args through the stack to a function in a shared library isn't being handled correctly. Am I missing something obvious? -Mike _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"