本文整理汇总了C++中osi_Assert函数的典型用法代码示例。如果您正苦于以下问题:C++ osi_Assert函数的具体用法?C++ osi_Assert怎么用?C++ osi_Assert使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了osi_Assert函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: afs_sgidaemon
int
afs_sgidaemon(void)
{
int s;
struct dcache *tdc;
if (afs_sgibklock == NULL) {
SV_INIT(&afs_sgibksync, "bksync", 0, 0);
SV_INIT(&afs_sgibkwait, "bkwait", 0, 0);
SPINLOCK_INIT(&afs_sgibklock, "bklock");
}
s = SPLOCK(afs_sgibklock);
for (;;) {
/* wait for something to do */
SP_WAIT(afs_sgibklock, s, &afs_sgibksync, PINOD);
osi_Assert(afs_sgibklist);
/* XX will probably need to generalize to real list someday */
s = SPLOCK(afs_sgibklock);
while (afs_sgibklist) {
tdc = afs_sgibklist;
afs_sgibklist = NULL;
SPUNLOCK(afs_sgibklock, s);
AFS_GLOCK();
tdc->dflags &= ~DFEntryMod;
osi_Assert(afs_WriteDCache(tdc, 1) == 0);
AFS_GUNLOCK();
s = SPLOCK(afs_sgibklock);
}
/* done all the work - wake everyone up */
while (SV_SIGNAL(&afs_sgibkwait));
}
}
示例2: _afs_tp_worker_start
/**
* start a worker thread.
*
* @param[in] pool thread pool object
* @param[inout] worker_out address in which to store worker thread object pointer
*
* @return operation status
* @retval 0 success
* @retval ENOMEM out of memory
*/
static int
_afs_tp_worker_start(struct afs_thread_pool * pool,
struct afs_thread_pool_worker ** worker_out)
{
int ret = 0;
pthread_attr_t attrs;
struct afs_thread_pool_worker * worker;
ret = _afs_tp_worker_alloc(worker_out);
if (ret) {
goto error;
}
worker = *worker_out;
worker->pool = pool;
worker->req_shutdown = 0;
osi_Assert(pthread_attr_init(&attrs) == 0);
osi_Assert(pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_DETACHED) == 0);
ret = pthread_create(&worker->tid, &attrs, &_afs_tp_worker_run, worker);
error:
return ret;
}
示例3: ih_copy
/* Copy an inode handle */
IHandle_t *
ih_copy(IHandle_t * ihP)
{
IH_LOCK;
osi_Assert(ih_Inited);
osi_Assert(ihP->ih_refcnt > 0);
ihP->ih_refcnt++;
IH_UNLOCK;
return ihP;
}
示例4: fd_reallyclose
/*
* Actually close the file descriptor handle and return it to
* the free list.
*/
int
fd_reallyclose(FdHandle_t * fdP)
{
FD_t closeFd;
IHandle_t *ihP;
if (!fdP)
return 0;
IH_LOCK;
osi_Assert(ih_Inited);
osi_Assert(fdInUseCount > 0);
osi_Assert(fdP->fd_status == FD_HANDLE_INUSE ||
fdP->fd_status == FD_HANDLE_CLOSING);
ihP = fdP->fd_ih;
closeFd = fdP->fd_fd;
fdP->fd_refcnt--;
if (fdP->fd_refcnt == 0) {
DLL_DELETE(fdP, ihP->ih_fdhead, ihP->ih_fdtail, fd_ihnext, fd_ihprev);
DLL_INSERT_TAIL(fdP, fdAvailHead, fdAvailTail, fd_next, fd_prev);
fdP->fd_status = FD_HANDLE_AVAIL;
fdP->fd_refcnt = 0;
fdP->fd_ih = NULL;
fdP->fd_fd = INVALID_FD;
}
/* All the file descriptor handles have been closed; reset
* the IH_REALLY_CLOSED flag indicating that ih_reallyclose
* has completed its job.
*/
if (!ihP->ih_fdhead) {
ihP->ih_flags &= ~IH_REALLY_CLOSED;
}
if (fdP->fd_refcnt == 0) {
IH_UNLOCK;
OS_CLOSE(closeFd);
IH_LOCK;
fdInUseCount -= 1;
}
/* If this is not the only reference to the Inode then we can decrement
* the reference count, otherwise we need to call ih_release. */
if (ihP->ih_refcnt > 1)
ihP->ih_refcnt--;
else
_ih_release_r(ihP);
IH_UNLOCK;
return 0;
}
示例5: iHandleAllocateChunk
/* Allocate a chunk of inode handles */
void
iHandleAllocateChunk(void)
{
int i;
IHandle_t *ihP;
osi_Assert(ihAvailHead == NULL);
ihP = malloc(I_HANDLE_MALLOCSIZE * sizeof(IHandle_t));
osi_Assert(ihP != NULL);
for (i = 0; i < I_HANDLE_MALLOCSIZE; i++) {
ihP[i].ih_refcnt = 0;
DLL_INSERT_TAIL(&ihP[i], ihAvailHead, ihAvailTail, ih_next, ih_prev);
}
}
示例6: SYNC_getSock
/**
* get a socket descriptor of the appropriate domain.
*
* @param[in] endpoint pointer to sync endpoint object
*
* @return socket descriptor
*
* @post socket of domain specified in endpoint structure is created and
* returned to caller.
*/
osi_socket
SYNC_getSock(SYNC_endpoint_t * endpoint)
{
osi_socket sd;
osi_Assert((sd = socket(endpoint->domain, SOCK_STREAM, 0)) >= 0);
return sd;
}
示例7: _afs_tp_worker_run
/**
* low-level thread entry point.
*
* @param[in] rock opaque pointer to thread worker object
*
* @return opaque return pointer from pool entry function
*
* @internal
*/
static void *
_afs_tp_worker_run(void * rock)
{
struct afs_thread_pool_worker * worker = rock;
struct afs_thread_pool * pool = worker->pool;
/* register worker with pool */
MUTEX_ENTER(&pool->lock);
queue_Append(&pool->thread_list, worker);
pool->nthreads++;
MUTEX_EXIT(&pool->lock);
/* call high-level entry point */
worker->ret = (*pool->entry)(pool, worker, pool->work_queue, pool->rock);
/* adjust pool live thread count */
MUTEX_ENTER(&pool->lock);
osi_Assert(pool->nthreads);
queue_Remove(worker);
pool->nthreads--;
if (!pool->nthreads) {
CV_BROADCAST(&pool->shutdown_cv);
pool->state = AFS_TP_STATE_STOPPED;
}
MUTEX_EXIT(&pool->lock);
_afs_tp_worker_free(worker);
return NULL;
}
示例8: stream_open
/* Open a file for buffered I/O */
StreamHandle_t *
stream_open(const char *filename, const char *mode)
{
FD_t fd = INVALID_FD;
if (strcmp(mode, "r") == 0) {
fd = OS_OPEN(filename, O_RDONLY, 0);
} else if (strcmp(mode, "r+") == 0) {
fd = OS_OPEN(filename, O_RDWR, 0);
} else if (strcmp(mode, "w") == 0) {
fd = OS_OPEN(filename, O_WRONLY | O_TRUNC | O_CREAT, 0);
} else if (strcmp(mode, "w+") == 0) {
fd = OS_OPEN(filename, O_RDWR | O_TRUNC | O_CREAT, 0);
} else if (strcmp(mode, "a") == 0) {
fd = OS_OPEN(filename, O_WRONLY | O_APPEND | O_CREAT, 0);
} else if (strcmp(mode, "a+") == 0) {
fd = OS_OPEN(filename, O_RDWR | O_APPEND | O_CREAT, 0);
} else {
osi_Assert(FALSE); /* not implemented */
}
if (fd == INVALID_FD) {
return NULL;
}
return stream_fdopen(fd);
}
示例9: afs_NewDynrootVolume
/**
* Init a new dynroot volume.
* @param Volume FID.
* @return Volume or NULL if not found.
*/
static struct volume *
afs_NewDynrootVolume(struct VenusFid *fid)
{
struct cell *tcell;
struct volume *tv;
struct vldbentry *tve;
char *bp, tbuf[CVBS];
tcell = afs_GetCell(fid->Cell, READ_LOCK);
if (!tcell)
return NULL;
tve = afs_osi_Alloc(sizeof(*tve));
osi_Assert(tve != NULL);
if (!(tcell->states & CHasVolRef))
tcell->states |= CHasVolRef;
bp = afs_cv2string(&tbuf[CVBS], fid->Fid.Volume);
memset(tve, 0, sizeof(*tve));
strcpy(tve->name, "local-dynroot");
tve->volumeId[ROVOL] = fid->Fid.Volume;
tve->flags = VLF_ROEXISTS;
tv = afs_SetupVolume(0, bp, tve, tcell, 0, 0, 0);
afs_PutCell(tcell, READ_LOCK);
afs_osi_Free(tve, sizeof(*tve));
return tv;
}
示例10: DNew
int
DNew(struct dcache *adc, int page, struct DirBuffer *entry)
{
/* Same as read, only do *not* even try to read the page, since it
* probably doesn't exist. */
struct buffer *tb;
AFS_STATCNT(DNew);
ObtainWriteLock(&afs_bufferLock, 264);
if ((tb = afs_newslot(adc, page, NULL)) == 0) {
ReleaseWriteLock(&afs_bufferLock);
return EIO;
}
/* extend the chunk, if needed */
/* Do it now, not in DFlush or afs_newslot when the data is written out,
* since now our caller has adc->lock writelocked, and we can't acquire
* that lock (or even map from a fid to a dcache) in afs_newslot or
* DFlush due to lock hierarchy issues */
if ((page + 1) * AFS_BUFFER_PAGESIZE > adc->f.chunkBytes) {
afs_AdjustSize(adc, (page + 1) * AFS_BUFFER_PAGESIZE);
osi_Assert(afs_WriteDCache(adc, 1) == 0);
}
ObtainWriteLock(&tb->lock, 265);
tb->lockers++;
ReleaseWriteLock(&afs_bufferLock);
ReleaseWriteLock(&tb->lock);
entry->buffer = tb;
entry->data = tb->data;
return 0;
}
示例11: exporter_add
struct afs_exporter *
exporter_add(afs_int32 size, struct exporterops *ops, afs_int32 state,
afs_int32 type, char *data)
{
struct afs_exporter *ex, *op;
afs_int32 length;
AFS_STATCNT(exporter_add);
if (!init_xexported) {
init_xexported = 1;
LOCK_INIT(&afs_xexp, "afs_xexp");
}
length = (size ? size : sizeof(struct afs_exporter));
ex = afs_osi_Alloc(length);
osi_Assert(ex != NULL);
memset(ex, 0, length);
ObtainWriteLock(&afs_xexp, 308);
for (op = root_exported; op; op = op->exp_next) {
if (!op->exp_next)
break;
}
if (op)
op->exp_next = ex;
else
root_exported = ex;
ReleaseWriteLock(&afs_xexp);
ex->exp_next = 0;
ex->exp_op = ops;
ex->exp_states = state;
ex->exp_data = data;
ex->exp_type = type;
return ex;
}
示例12: streamHandleAllocateChunk
/* Allocate a chunk of stream handles */
void
streamHandleAllocateChunk(void)
{
int i;
StreamHandle_t *streamP;
osi_Assert(streamAvailHead == NULL);
streamP = (StreamHandle_t *)
malloc(STREAM_HANDLE_MALLOCSIZE * sizeof(StreamHandle_t));
osi_Assert(streamP != NULL);
for (i = 0; i < STREAM_HANDLE_MALLOCSIZE; i++) {
streamP[i].str_fd = INVALID_FD;
DLL_INSERT_TAIL(&streamP[i], streamAvailHead, streamAvailTail,
str_next, str_prev);
}
}
示例13: _ih_release_r
/* Release an Inode handle. All cached file descriptors for this
* inode are closed when the last reference to this handle is released
*/
static int
_ih_release_r(IHandle_t * ihP)
{
int ihash;
if (!ihP)
return 0;
osi_Assert(ihP->ih_refcnt > 0);
if (ihP->ih_refcnt > 1) {
ihP->ih_refcnt--;
return 0;
}
ihash = IH_HASH(ihP->ih_dev, ihP->ih_vid, ihP->ih_ino);
DLL_DELETE(ihP, ihashTable[ihash].ihash_head,
ihashTable[ihash].ihash_tail, ih_next, ih_prev);
ih_fdclose(ihP);
ihP->ih_refcnt--;
DLL_INSERT_TAIL(ihP, ihAvailHead, ihAvailTail, ih_next, ih_prev);
return 0;
}
示例14: vn_prolog
static int
vn_prolog(struct cmd_syndesc * as, struct fssync_state * state)
{
struct cmd_item *ti;
state->vop = (struct volop_state *) calloc(1, sizeof(struct volop_state));
osi_Assert(state->vop != NULL);
if ((ti = as->parms[CUSTOM_PARMS_OFFSET].items)) { /* -volumeid */
state->vop->volume = atoi(ti->data);
} else {
fprintf(stderr, "required argument -volumeid not given\n");
}
if ((ti = as->parms[CUSTOM_PARMS_OFFSET+1].items)) { /* -vnodeid */
state->vop->vnode = atoi(ti->data);
} else {
fprintf(stderr, "required argument -vnodeid not given\n");
}
if ((ti = as->parms[CUSTOM_PARMS_OFFSET+2].items)) { /* -unique */
state->vop->unique = atoi(ti->data);
} else {
state->vop->unique = 0;
}
if ((ti = as->parms[COMMON_VOLOP_PARMS_OFFSET+3].items)) { /* -partition */
strlcpy(state->vop->partName, ti->data, sizeof(state->vop->partName));
} else {
memset(state->vop->partName, 0, sizeof(state->vop->partName));
}
return 0;
}
示例15: ih_reallyclose
/* Close all cached file descriptors for this inode. */
int
ih_reallyclose(IHandle_t * ihP)
{
if (!ihP)
return 0;
IH_LOCK;
ihP->ih_refcnt++; /* must not disappear over unlock */
if (ihP->ih_synced) {
FdHandle_t *fdP;
ihP->ih_synced = 0;
IH_UNLOCK;
fdP = IH_OPEN(ihP);
if (fdP) {
OS_SYNC(fdP->fd_fd);
FDH_CLOSE(fdP);
}
IH_LOCK;
}
osi_Assert(ihP->ih_refcnt > 0);
ih_fdclose(ihP);
if (ihP->ih_refcnt > 1)
ihP->ih_refcnt--;
else
_ih_release_r(ihP);
IH_UNLOCK;
return 0;
}