/*
 *  semaphore.h
 *  RatLib
 *
 *  Created by Curtis Jones on 2008.10.20.
 *  Copyright 2008 Curtis Jones. All rights reserved.
 *
 */

#ifndef __SEMAPHORE_H__
#define __SEMAPHORE_H__

#include "/usr/include/semaphore.h"
#include "cobject.h"
#include "memlock.h"

struct opool;

//
// semphore
//
struct semaphore
{
	cobject_t cobject;								// super class
	
	sem_t *sem;												// semaphore
	char name[20];										// semaphore name
};
typedef struct semaphore semaphore_t;

/**
 *
 */
int semaphore_init (semaphore_t*, struct opool*);

/**
 *
 */
int semaphore_destroy (semaphore_t*);

/**
 *
 */
int semaphore_post (semaphore_t*);

/**
 *
 */
int semaphore_wait (semaphore_t*);

/**
 *
 */
semaphore_t* semaphore_retain (semaphore_t*);

/**
 *
 */
void semaphore_release (semaphore_t*);

#endif /* __SEMAPHORE_H__ */
