[fpc-devel] CSuspendThread/CResumeThread

Jonas Maebe jonas.maebe at elis.ugent.be
Wed Nov 8 11:07:42 CET 2006


On 8 nov 2006, at 10:42, Ales Katona wrote:

> Jonas currently fpc2.1.1 doesn't compile on 2.1.1 with:
>
> rtl/units/i386-freebsd -di386 -dRELEASE ../unix/cthreads.pp
> cthreads.pp(252,42) Error: Incompatible type for arg no. 1: Got
> "LongInt", expected "Pointer"

So either TThreadID or pthread_t is declared wrongly for FreeBSD  
(since that routine passes a TThreadID to a routine expecting a  
pthread_t)

> Note:
> unixtypes thread_t = pointer

No. unixtype includes ptypes.inc. ptypes.inc is OS-dependent. For  
*BSD and Darwin, pthread_t (not thread_t) is defined as a pointer.  
For Linux it's defined as a cuLong. It's not defined in that file at  
all for Solaris, which is a bug I think (it's defined in solaris/ 
pthread.inc instead).

> pthreads.inc thread_t (BSD and linux) = cInt {linux is Longint but
> that's just bug)

I don't see this. Afaics, pthread_t (and ppthread_t) is used  
appropriately everywhere in pthread.inc for both Linux and FreeBSD. I  
didn't check all declarations in detail, but at first sight the cInts  
(and longints in Linux) are used where the C versions also return an  
int, and not instead of pthread_t.

> pthreads.inc thread_t (Darwin) = pointer
>
> Result of pthread_most = cInt
> Result of ThreadManager.Killfunctions = DWord
>
> This is some serious mess. First the threadmanager functions need to
> return a signed result,

Or possibly a result depending on the OS (just like TThreadID is an  
OS-dependent type). I don't know what the Windows versions return.

> second the pointer vs cInt stuff has to be
> properly cleaned, remove thread_t from unittypes etc.

Sorry, I'm not following the last point. What do you mean with  
"unittypes"? The UnixType unit or "types used in various units"? Most  
stuff should in fact be based on pthread_t I think, since that's how  
the C declaration of those routines looks.

We could define pthread_t as TThreadID to avoid duplication of  
information though.


Jonas



More information about the fpc-devel mailing list