Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 02a0977

Browse files
Added parameters and interfaces.
1 parent eca7019 commit 02a0977

File tree

1 file changed

+81
-4
lines changed

1 file changed

+81
-4
lines changed

‎src/unix_pthread.F90‎

Lines changed: 81 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,53 @@ module unix_pthread
99

1010
#if defined (__linux__)
1111

12-
integer, parameter :: PTHREAD_SIZE = 8 ! 8 Bytes.
13-
integer, parameter :: PTHREAD_MUTEX_SIZE = 40 ! 40 Bytes.
12+
integer(kind=c_int), parameter :: PTHREAD_CREATE_DETACHED = 1
13+
14+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_ENABLE = 0
15+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_DISABLE = 1
16+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_DEFERRED = 0
17+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_ASYNCHRONOUS = 1
18+
integer(kind=c_int), parameter :: PTHREAD_CANCELED = -1
19+
20+
integer(kind=c_int), parameter :: PTHREAD_EXPLICIT_SCHED = 1
21+
integer(kind=c_int), parameter :: PTHREAD_PROCESS_PRIVATE = 0
22+
23+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_NORMAL = 0
24+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_ERRORCHECK = 2
25+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_RECURSIVE = 1
26+
27+
integer, parameter :: PTHREAD_SIZE = 8 ! 8 Bytes.
28+
integer, parameter :: PTHREAD_MUTEX_SIZE = 40 ! 40 Bytes.
1429

1530
#elif defined (__FreeBSD__)
1631

17-
integer, parameter :: PTHREAD_SIZE = 8 ! 8 Bytes.
18-
integer, parameter :: PTHREAD_MUTEX_SIZE = 8 ! 8 Bytes.
32+
integer(kind=c_int), parameter :: PTHREAD_DETACHED = int(z'1')
33+
integer(kind=c_int), parameter :: PTHREAD_SCOPE_SYSTEM = int(z'2')
34+
integer(kind=c_int), parameter :: PTHREAD_INHERIT_SCHED = int(z'4')
35+
integer(kind=c_int), parameter :: PTHREAD_NOFLOAT = int(z'8')
36+
37+
integer(kind=c_int), parameter :: PTHREAD_CREATE_DETACHED = PTHREAD_DETACHED
38+
integer(kind=c_int), parameter :: PTHREAD_CREATE_JOINABLE = 0
39+
integer(kind=c_int), parameter :: PTHREAD_SCOPE_PROCESS = 0
40+
integer(kind=c_int), parameter :: PTHREAD_EXPLICIT_SCHED = 0
41+
42+
integer(kind=c_int), parameter :: PTHREAD_PROCESS_PRIVATE = 0
43+
integer(kind=c_int), parameter :: PTHREAD_PROCESS_SHARED = 1
44+
45+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_ENABLE = 0
46+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_DISABLE = 1
47+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_DEFERRED = 0
48+
integer(kind=c_int), parameter :: PTHREAD_CANCEL_ASYNCHRONOUS = 2
49+
integer(kind=c_int), parameter :: PTHREAD_CANCELED = 1
50+
51+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_ERRORCHECK = 1 ! Default POSIX mutex.
52+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_RECURSIVE = 2 ! Recursive mutex.
53+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_NORMAL = 3 ! No error checking.
54+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_ADAPTIVE_NP = 4 ! Adaptive mutex, spins briefly before blocking on lock.
55+
integer(kind=c_int), parameter :: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_ERRORCHECK
56+
57+
integer, parameter :: PTHREAD_SIZE = 8 ! 8 Bytes.
58+
integer, parameter :: PTHREAD_MUTEX_SIZE = 8 ! 8 Bytes.
1959

2060
#endif
2161

@@ -31,16 +71,28 @@ module unix_pthread
3171
character(kind=c_char) :: hidden(PTHREAD_MUTEX_SIZE)
3272
end type c_pthread_mutex_t
3373

74+
public :: c_pthread_cancel
3475
public :: c_pthread_create
3576
public :: c_pthread_detach
77+
public :: c_pthread_exit
3678
public :: c_pthread_join
3779
public :: c_pthread_mutex_destroy
3880
public :: c_pthread_mutex_init
3981
public :: c_pthread_mutex_lock
4082
public :: c_pthread_mutex_trylock
4183
public :: c_pthread_mutex_unlock
84+
public :: c_pthread_setcancelstate
85+
public :: c_pthread_setcanceltype
4286

4387
interface
88+
! int pthread_cancel(pthread_t thread)
89+
function c_pthread_cancel(thread) bind(c, name='pthread_cancel')
90+
import :: c_int, c_ptr, c_pthread_t
91+
implicit none
92+
type(c_pthread_t), intent(in), value :: thread
93+
integer(kind=c_int) :: c_pthread_cancel
94+
end function c_pthread_cancel
95+
4496
! int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg)
4597
function c_pthread_create(thread, attr, start_routine, arg) bind(c, name='pthread_create')
4698
import :: c_int, c_ptr, c_funptr, c_pthread_t
@@ -60,6 +112,13 @@ function c_pthread_detach(thread) bind(c, name='pthread_detach')
60112
integer(kind=c_int) :: c_pthread_detach
61113
end function c_pthread_detach
62114

115+
! void pthread_exit(void *retval)
116+
subroutine c_pthread_exit(retval) bind(c, name='pthread_exit')
117+
import :: c_ptr
118+
implicit none
119+
type(c_ptr), intent(in), value :: retval
120+
end subroutine c_pthread_exit
121+
63122
! int pthread_join(pthread_t thread, void **value_ptr)
64123
function c_pthread_join(thread, value_ptr) bind(c, name='pthread_join')
65124
import :: c_int, c_ptr, c_pthread_t
@@ -109,5 +168,23 @@ function c_pthread_mutex_unlock(mutex) bind(c, name='pthread_mutex_unlock')
109168
type(c_pthread_mutex_t), intent(in) :: mutex
110169
integer(kind=c_int) :: c_pthread_mutex_unlock
111170
end function c_pthread_mutex_unlock
171+
172+
! int pthread_setcancelstate(int state, int *oldstate)
173+
function c_pthread_setcancelstate(state, oldstate) bind(c, name='pthread_setcancelstate')
174+
import :: c_int
175+
implicit none
176+
integer(kind=c_int), intent(in), value :: state
177+
integer(kind=c_int), intent(out) :: oldstate
178+
integer(kind=c_int) :: c_pthread_setcancelstate
179+
end function c_pthread_setcancelstate
180+
181+
! int pthread_setcanceltype(int type, int *oldtype)
182+
function c_pthread_setcanceltype(type, oldtype) bind(c, name='pthread_setcanceltype')
183+
import :: c_int
184+
implicit none
185+
integer(kind=c_int), intent(in), value :: type
186+
integer(kind=c_int), intent(out) :: oldtype
187+
integer(kind=c_int) :: c_pthread_setcanceltype
188+
end function c_pthread_setcanceltype
112189
end interface
113190
end module unix_pthread

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /