summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/libc/src/pthread.inc
blob: 2e341061f6767621c4eddc713a51f1cecb26c4b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function InitializeCriticalSection(var lpCriticalSection: TRTLCriticalSection): Integer;

var
  Attr : pthread_mutexattr_t;

begin
  Result:=pthread_mutexattr_init(Attr);
  if Result=0 then 
    Try
      Result:=pthread_mutexattr_settype(Attr,PTHREAD_MUTEX_RECURSIVE);
      if Result=0 then 
        Result:=pthread_mutex_init(lpCriticalSection, Attr);
    Finally
      pthread_mutexattr_destroy(Attr);
    end;
end;

function TryEnterCriticalSection(var lpCriticalSection: TRTLCriticalSection): Boolean;
begin
  Result:=EBUSY<>pthread_mutex_trylock(lpCriticalSection);
end;