summaryrefslogtreecommitdiffstats
path: root/sesman/lock.c
diff options
context:
space:
mode:
Diffstat (limited to 'sesman/lock.c')
-rw-r--r--sesman/lock.c113
1 files changed, 0 insertions, 113 deletions
diff --git a/sesman/lock.c b/sesman/lock.c
index 9aa3e621..d63f57ec 100644
--- a/sesman/lock.c
+++ b/sesman/lock.c
@@ -32,14 +32,6 @@ pthread_mutexattr_t lock_chain_attr; /* mutex attributes */
pthread_mutex_t lock_config; /* configuration access lock */
pthread_mutexattr_t lock_config_attr; /* mutex attributes */
-pthread_mutex_t lock_fork; /* this lock protects the counters */
-pthread_mutexattr_t lock_fork_attr; /* mutex attributes */
-sem_t lock_fork_req; /* semaphore on which the process that are going to fork suspend on */
-sem_t lock_fork_wait; /* semaphore on which the suspended process wait on */
-int lock_fork_forkers_count; /* threads that want to fork */
-int lock_fork_blockers_count; /* threads thar are blocking fork */
-int lock_fork_waiting_count; /* threads suspended until the fork finishes */
-
sem_t lock_socket;
void DEFAULT_CC
@@ -55,18 +47,6 @@ lock_init(void)
/* initializing config lock */
pthread_mutexattr_init(&lock_config_attr);
pthread_mutex_init(&lock_config, &lock_config_attr);
-
- /* initializing fork lock */
- pthread_mutexattr_init(&lock_fork_attr);
- pthread_mutex_init(&lock_chain, &lock_fork_attr);
- sem_init(&lock_fork_req, 0, 0);
- sem_init(&lock_fork_wait, 0, 0);
-
- /* here we don't use locking because lock_init() should be called BEFORE */
- /* any thread is created */
- lock_fork_blockers_count=0;
- lock_fork_waiting_count=0;
- lock_fork_forkers_count=0;
}
/******************************************************************************/
@@ -105,96 +85,3 @@ lock_socket_release(void)
sem_post(&lock_socket);
}
-/******************************************************************************/
-void DEFAULT_CC
-lock_fork_request(void)
-{
- /* lock mutex */
- pthread_mutex_lock(&lock_fork);
- if (lock_fork_blockers_count == 0)
- {
- /* if noone is blocking fork(), then we're allowed to fork */
- sem_post(&lock_fork_req);
- }
- lock_fork_forkers_count++;
- pthread_mutex_unlock(&lock_fork);
-
- /* we wait to be allowed to fork() */
- sem_wait(&lock_fork_req);
-}
-
-/******************************************************************************/
-void DEFAULT_CC
-lock_fork_release(void)
-{
- pthread_mutex_lock(&lock_fork);
- lock_fork_forkers_count--;
-
- /* if there's someone else that want to fork, we let him fork() */
- if (lock_fork_forkers_count > 0)
- {
- sem_post(&lock_fork_req);
- }
-
- for (;lock_fork_waiting_count > 0; lock_fork_waiting_count--)
- {
- /* waking up the other processes */
- sem_post(&lock_fork_wait);
- }
- pthread_mutex_unlock(&lock_fork);
-}
-
-/******************************************************************************/
-void DEFAULT_CC
-lock_fork_critical_section_end(int blocking)
-{
- LOG_DBG("lock_fork_critical_secection_end()",0);
- /* lock mutex */
- pthread_mutex_lock(&lock_fork);
-
- if (blocking == SESMAN_LOCK_FORK_BLOCKER)
- {
- lock_fork_blockers_count--;
- }
-
- /* if there's someone who wants to fork and we're the last blocking */
- /* then we let him go */
- if ((lock_fork_blockers_count == 0) && (lock_fork_forkers_count>0))
- {
- sem_post(&lock_fork_req);
- }
- pthread_mutex_unlock(&lock_fork);
-}
-
-/******************************************************************************/
-int DEFAULT_CC
-lock_fork_critical_section_start(void)
-{
- LOG_DBG("lock_fork_critical_secection_start()",0);
- do
- {
- pthread_mutex_lock(&lock_fork);
-
- /* someone requested to fork */
- if (lock_fork_forkers_count > 0)
- {
- lock_fork_waiting_count++;
- pthread_mutex_unlock(&lock_fork);
-
- /* we wait until the fork finishes */
- sem_wait(&lock_fork_wait);
-
- }
- else
- {
- /* no fork, so we can go on... */
- lock_fork_blockers_count++;
- pthread_mutex_unlock(&lock_fork);
-
- return SESMAN_LOCK_FORK_BLOCKER;
- }
- } while (1);
-
- /* we'll never get here */
- return SESMAN_LOCK_FORK_WAITING;
-}