5
/* $Id: locks.c,v 1.15.6.1 2006-12-14 13:24:36 manoj Exp $ */
15
extern void armci_die(char*,int);
17
#if defined(SPINLOCK) || defined(PMUTEXES)
21
void CreateInitLocks(int num_locks, lockset_t *plockid)
23
int locks_per_proc, size;
24
extern void armci_set_serv_mutex_arr(void *);
25
ARMCI_PR_DBG("enter",0);
26
ptr_arr = (void**)malloc(armci_nproc*sizeof(void*));
27
locks_per_proc = (num_locks*armci_nclus)/armci_nproc + 1;
28
size=locks_per_proc*sizeof(PAD_LOCK_T);
29
PARMCI_Malloc(ptr_arr, size);
30
_armci_int_mutexes = (PAD_LOCK_T*) ptr_arr[armci_master];
31
# ifdef PORTALS_SPECIFIC_QUESTION
32
if(armci_me==armci_master)armci_set_serv_mutex_arr(_armci_int_mutexes);
35
if(!_armci_int_mutexes) armci_die("Failed to create spinlocks",size);
38
if(armci_me == armci_master) {
40
pthread_mutexattr_t pshared;
41
if(pthread_mutexattr_init(&pshared))
42
armci_die("armci_allocate_locks: could not init mutex attr",0);
44
if(pthread_mutexattr_setpshared(&pshared,PTHREAD_PROCESS_SHARED))
45
armci_die("armci_allocate_locks: could not set PROCESS_SHARED",0);
48
for(i=0; i< locks_per_proc*armci_clus_info[armci_clus_me].nslave; i++){
49
if(pthread_mutex_init(_armci_int_mutexes+i,&pshared))
50
armci_die("armci_allocate_locks: could not init mutex",i);
55
bzero((char*)ptr_arr[armci_me],size);
56
ARMCI_PR_DBG("exit",0);
60
void InitLocks(int num_locks, lockset_t lockid)
62
/* what are you doing here ?
63
All processes should've called CreateInitLocks().
64
Check preprocessor directtives and see lock allocation in armci_init */
65
armci_die("InitLocks(): what are you doing here ?",armci_me);
69
void DeleteLocks(lockset_t lockid)
71
_armci_int_mutexes = (PAD_LOCK_T*)0;
75
/*********************** every thing else *************************/
77
void CreateInitLocks(int num_locks, lockset_t *lockid)
80
void InitLocks(int num_locks, lockset_t lockid)
85
void DeleteLocks(lockset_t lockid)