#ifndef SAFE_RESOURCE_H
#define SAFE_RESOURCE_H

#ifdef __cplusplus
#define BEGIN_CPP_DECL extern "C" {
#define END_CPP_DECL }
#else
#define BEGIN_CPP_DECL
#define END_CPP_DECL
#endif

BEGIN_CPP_DECL

int safe_res_create(unsigned int avail);
int safe_res_set_max(int res_id, unsigned int max_res);
int safe_res_acquire(int res_id, unsigned int num_copies);
int safe_res_acquire_nonblock(int res_id, unsigned int num_copies);
int safe_res_release(int res_id, unsigned int num_copies);
void safe_res_release_all(void);

END_CPP_DECL

#endif

