您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ xnlock_get_irqsave函数代码示例

51自学网 2021-06-03 11:50:21
  C++
这篇教程C++ xnlock_get_irqsave函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中xnlock_get_irqsave函数的典型用法代码示例。如果您正苦于以下问题:C++ xnlock_get_irqsave函数的具体用法?C++ xnlock_get_irqsave怎么用?C++ xnlock_get_irqsave使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了xnlock_get_irqsave函数的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: format_irq_proc

static int format_irq_proc(unsigned int irq, char *str){	xnintr_t *intr;	char *p = str;	spl_t s;	if (rthal_virtual_irq_p(irq)) {		p += sprintf(p, "         [virtual]");		return p - str;	} else if (irq == XNARCH_TIMER_IRQ) {		p += sprintf(p, "         [timer]");		return p - str;#ifdef CONFIG_SMP	} else if (irq == RTHAL_SERVICE_IPI0) {		p += sprintf(p, "         [IPI]");		return p - str;	} else if (irq == RTHAL_CRITICAL_IPI) {		p += sprintf(p, "         [critical sync]");		return p - str;#endif /* CONFIG_SMP */	}	xnlock_get_irqsave(&intrlock, s);	intr = xnintr_shirq_first(irq);	if (intr) {		strcpy(p, "        "); p += 8;		do {			*p = ' '; p += 1;			strcpy(p, intr->name); p += strlen(intr->name);			intr = xnintr_shirq_next(intr);		} while (intr);	}	xnlock_put_irqrestore(&intrlock, s);	return p - str;}
开发者ID:chrmorais,项目名称:miniemc2,代码行数:40,


示例2: ref_flg

ER ref_flg(T_RFLG *pk_rflg, ID flgid){	uitask_t *sleeper;	uiflag_t *flag;	ER err = E_OK;	spl_t s;	if (xnpod_asynch_p())		return EN_CTXID;	if (flgid <= 0 || flgid > uITRON_MAX_FLAGID)		return E_ID;	xnlock_get_irqsave(&nklock, s);	flag = xnmap_fetch(ui_flag_idmap, flgid);	if (!flag) {		err = E_NOEXS;		goto unlock_and_exit;	}	if (xnsynch_pended_p(&flag->synchbase)) {		xnpholder_t *holder = getheadpq(xnsynch_wait_queue(&flag->synchbase));		xnthread_t *thread = link2thread(holder, plink);		sleeper = thread2uitask(thread);		pk_rflg->wtsk = sleeper->id;	} else		pk_rflg->wtsk = FALSE;	pk_rflg->exinf = flag->exinf;	pk_rflg->flgptn = flag->flgvalue;unlock_and_exit:	xnlock_put_irqrestore(&nklock, s);	return err;}
开发者ID:JackieXie168,项目名称:xenomai,代码行数:39,


示例3: rt_event_create

int rt_event_create(RT_EVENT *event,		    const char *name, unsigned long ivalue, int mode){	int err = 0;	spl_t s;	if (xnpod_asynch_p())		return -EPERM;	xnsynch_init(&event->synch_base, mode & EV_PRIO, NULL);	event->value = ivalue;	event->handle = 0;	/* i.e. (still) unregistered event. */	event->magic = XENO_EVENT_MAGIC;	xnobject_copy_name(event->name, name);	inith(&event->rlink);	event->rqueue = &xeno_get_rholder()->eventq;	xnlock_get_irqsave(&nklock, s);	appendq(event->rqueue, &event->rlink);	xnlock_put_irqrestore(&nklock, s);#ifdef CONFIG_XENO_OPT_PERVASIVE	event->cpid = 0;#endif /* CONFIG_XENO_OPT_PERVASIVE */	/*	 * <!> Since xnregister_enter() may reschedule, only register	 * complete objects, so that the registry cannot return	 * handles to half-baked objects...	 */	if (name) {		err = xnregistry_enter(event->name, event, &event->handle,				       &__event_pnode);		if (err)			rt_event_delete(event);	}	return err;}
开发者ID:chrmorais,项目名称:miniemc2,代码行数:39,


示例4: rt_buffer_delete

int rt_buffer_delete(RT_BUFFER *bf){	int ret = 0, resched;	spl_t s;	if (xnpod_asynch_p())		return -EPERM;	xnlock_get_irqsave(&nklock, s);	bf = xeno_h2obj_validate(bf, XENO_BUFFER_MAGIC, RT_BUFFER);	if (bf == NULL) {		ret = xeno_handle_error(bf, XENO_BUFFER_MAGIC, RT_BUFFER);		goto unlock_and_exit;	}	xnarch_free_host_mem(bf->bufmem, bf->bufsz);	removeq(bf->rqueue, &bf->rlink);	resched = xnsynch_destroy(&bf->isynch_base) == XNSYNCH_RESCHED;	resched += xnsynch_destroy(&bf->osynch_base) == XNSYNCH_RESCHED;	if (bf->handle)		xnregistry_remove(bf->handle);	xeno_mark_deleted(bf);	if (resched)		/*		 * Some task has been woken up as a result of the		 * deletion: reschedule now.		 */		xnpod_schedule();      unlock_and_exit:	xnlock_put_irqrestore(&nklock, s);	return ret;}
开发者ID:BhargavKola,项目名称:xenomai-forge,代码行数:39,


示例5: pthread_once

/** * Execute an initialization routine. * * This service may be used by libraries which need an initialization function * to be called only once. * * The function @a init_routine will only be called, with no argument, the first * time this service is called specifying the address @a once. * * @return 0 on success; * @return an error number if: * - EINVAL, the object pointed to by @a once is invalid (it must have been *   initialized with PTHREAD_ONCE_INIT). * * @see * <a href="http://www.opengroup.org/onlinepubs/000095399/functions/pthread_once.html"> * Specification.</a> * */int pthread_once(pthread_once_t * once, void (*init_routine) (void)){	spl_t s;	xnlock_get_irqsave(&nklock, s);	if (!pse51_obj_active(once, PSE51_ONCE_MAGIC, pthread_once_t)) {		xnlock_put_irqrestore(&nklock, s);		return EINVAL;	}	if (!once->routine_called) {		init_routine();		/* If the calling thread is canceled while executing init_routine,		   routine_called will not be set to 1. */		once->routine_called = 1;	}	xnlock_put_irqrestore(&nklock, s);	return 0;}
开发者ID:BhargavKola,项目名称:xenomai-forge,代码行数:41,


示例6: t_restart

u_long t_restart(u_long tid, u_long targs[]){	u_long err = SUCCESS;	psostask_t *task;	spl_t s;	int n;	if (xnpod_unblockable_p())		return -EPERM;	xnlock_get_irqsave(&nklock, s);	if (tid == 0)		task = psos_current_task();	else {		task = psos_h2obj_active(tid, PSOS_TASK_MAGIC, psostask_t);		if (!task) {			err = psos_handle_error(tid, PSOS_TASK_MAGIC, psostask_t);			goto unlock_and_exit;		}		if (xnthread_test_state(&task->threadbase, XNDORMANT)) {			err = ERR_NACTIVE;			goto unlock_and_exit;		}	}	for (n = 0; n < 4; n++)		task->args[n] = targs ? targs[n] : 0;	xnpod_restart_thread(&task->threadbase);unlock_and_exit:	xnlock_put_irqrestore(&nklock, s);	return err;}
开发者ID:JackieXie168,项目名称:xenomai,代码行数:39,


示例7: sc_minquiry

int sc_minquiry(int mid, int *errp){	vrtxmx_t *mx;	spl_t s;	int rc;	xnlock_get_irqsave(&nklock, s);	mx = xnmap_fetch(vrtx_mx_idmap, mid);	if (mx == NULL) {		rc = 0;		*errp = ER_ID;		goto unlock_and_exit;	}	rc = xnsynch_owner(&mx->synchbase) == NULL;unlock_and_exit:	xnlock_put_irqrestore(&nklock, s);	return rc;}
开发者ID:TALABOULMA-Walid,项目名称:xenomai-2.6,代码行数:23,


示例8: sem_timedwait

/** * Attempt, during a bounded time, to lock a semaphore. * * This serivce is equivalent to sem_wait(), except that the caller is only * blocked until the timeout @a abs_timeout expires. * * @param sm the semaphore to be locked; * * @param abs_timeout the timeout, expressed as an absolute value of the * CLOCK_REALTIME clock. * * @retval 0 on success; * @retval -1 with @a errno set if: * - EPERM, the caller context is invalid; * - EINVAL, the semaphore is invalid or uninitialized; * - EINVAL, the specified timeout is invalid; * - EPERM, the semaphore @a sm is not process-shared and does not belong to the *   current process; * - EINTR, the caller was interrupted by a signal while blocked in this *   service; * - ETIMEDOUT, the semaphore could not be locked and the specified timeout *   expired. * * @par Valid contexts: * - Xenomai kernel-space thread, * - Xenomai user-space thread (switches to primary mode). * * @see * <a href="http://www.opengroup.org/onlinepubs/000095399/functions/sem_timedwait.html"> * Specification.</a> * */int sem_timedwait(sem_t * sm, const struct timespec *abs_timeout){	struct __shadow_sem *shadow = &((union __xeno_sem *)sm)->shadow_sem;	spl_t s;	int err;	if (abs_timeout->tv_nsec > ONE_BILLION) {		err = EINVAL;		goto error;	}	xnlock_get_irqsave(&nklock, s);	err = sem_timedwait_internal(shadow, 1, ts2ticks_ceil(abs_timeout) + 1);	xnlock_put_irqrestore(&nklock, s);  error:	if (err) {		thread_set_errno(err);		return -1;	}	return 0;}
开发者ID:JackieXie168,项目名称:xenomai,代码行数:55,


示例9: xnlock_get_irqsave

struct xnsched *xnsched_finish_unlocked_switch(struct xnsched *sched){	struct xnthread *last;	spl_t s;	xnlock_get_irqsave(&nklock, s);#ifdef CONFIG_SMP	/* If current thread migrated while suspended */	sched = xnsched_current();#endif /* CONFIG_SMP */	last = sched->last;	sched->status &= ~XNINSW;	/* Detect a thread which called xnthread_migrate() */	if (last->sched != sched) {		xnsched_putback(last);		xnthread_clear_state(last, XNMIGRATE);	}	return sched;}
开发者ID:ChunHungLiu,项目名称:xenomai,代码行数:23,


示例10: rt_cond_inquire

int rt_cond_inquire(RT_COND *cond, RT_COND_INFO *info){    int err = 0;    spl_t s;    xnlock_get_irqsave(&nklock, s);    cond = xeno_h2obj_validate(cond, XENO_COND_MAGIC, RT_COND);    if (!cond) {        err = xeno_handle_error(cond, XENO_COND_MAGIC, RT_COND);        goto unlock_and_exit;    }    strcpy(info->name, cond->name);    info->nwaiters = xnsynch_nsleepers(&cond->synch_base);unlock_and_exit:    xnlock_put_irqrestore(&nklock, s);    return err;}
开发者ID:meeusr,项目名称:xenomai-forge,代码行数:23,


示例11: lock_vfile_store

static ssize_t lock_vfile_store(struct xnvfile_input *input){	ssize_t ret;	spl_t s;	int cpu;	long val;	ret = xnvfile_get_integer(input, &val);	if (ret < 0)		return ret;	if (val != 0)		return -EINVAL;	for_each_realtime_cpu(cpu) {		xnlock_get_irqsave(&nklock, s);		memset(&per_cpu(xnlock_stats, cpu), '/0', sizeof(struct xnlockinfo));		xnlock_put_irqrestore(&nklock, s);	}	return ret;}
开发者ID:ChunHungLiu,项目名称:xenomai,代码行数:23,


示例12: rt_cond_broadcast

int rt_cond_broadcast(RT_COND *cond){    int err = 0;    spl_t s;    xnlock_get_irqsave(&nklock, s);    cond = xeno_h2obj_validate(cond, XENO_COND_MAGIC, RT_COND);    if (!cond) {        err = xeno_handle_error(cond, XENO_COND_MAGIC, RT_COND);        goto unlock_and_exit;    }    if (xnsynch_flush(&cond->synch_base, 0) == XNSYNCH_RESCHED)        xnpod_schedule();unlock_and_exit:    xnlock_put_irqrestore(&nklock, s);    return err;}
开发者ID:meeusr,项目名称:xenomai-forge,代码行数:23,


示例13: t_ident

u_long t_ident(const char *name, u_long node, u_long *tid_r){	u_long err = SUCCESS;	xnholder_t *holder;	psostask_t *task;	spl_t s;	if (node > 1)		return ERR_NODENO;	if (!name) {		if (xnpod_unblockable_p())			return ERR_OBJID;		*tid_r = (u_long)psos_current_task();		return SUCCESS;	}	xnlock_get_irqsave(&nklock, s);	for (holder = getheadq(&psostaskq);	     holder; holder = nextq(&psostaskq, holder)) {		task = link2psostask(holder);		if (!strcmp(task->name, name)) {			*tid_r = (u_long)task;			goto unlock_and_exit;		}	}	err = ERR_OBJNF;unlock_and_exit:	xnlock_put_irqrestore(&nklock, s);	return err;}
开发者ID:JackieXie168,项目名称:xenomai,代码行数:37,


示例14: rt_cond_create

int rt_cond_create(RT_COND *cond, const char *name){    int err = 0;    spl_t s;    if (xnpod_asynch_p())        return -EPERM;    xnsynch_init(&cond->synch_base, XNSYNCH_PRIO, NULL);    cond->handle = 0;	/* i.e. (still) unregistered cond. */    cond->magic = XENO_COND_MAGIC;    xnobject_copy_name(cond->name, name);    inith(&cond->rlink);    cond->rqueue = &xeno_get_rholder()->condq;    xnlock_get_irqsave(&nklock, s);    appendq(cond->rqueue, &cond->rlink);    xnlock_put_irqrestore(&nklock, s);#ifndef __XENO_SIM__    cond->cpid = 0;#endif    /*     * <!> Since xnregister_enter() may reschedule, only register     * complete objects, so that the registry cannot return     * handles to half-baked objects...     */    if (name) {        err = xnregistry_enter(cond->name, cond, &cond->handle,                               &__cond_pnode.node);        if (err)            rt_cond_delete(cond);    }    return err;}
开发者ID:meeusr,项目名称:xenomai-forge,代码行数:37,


示例15: pthread_mutexattr_setprotocol

/** * Set the protocol attribute of a mutex attributes object. * * This service set the @a type attribute of the mutex attributes object * @a attr. * * @param attr an initialized mutex attributes object, * * @param proto value of the @a protocol attribute, may be one of: * - PTHREAD_PRIO_NONE, meaning that a mutex created with the attributes object *   @a attr will not follow any priority protocol; * - PTHREAD_PRIO_INHERIT, meaning that a mutex created with the attributes *   object @a attr, will follow the priority inheritance protocol. * * The value PTHREAD_PRIO_PROTECT (priority ceiling protocol) is unsupported. * * @return 0 on success, * @return an error number if: * - EINVAL, the mutex attributes object @a attr is invalid; * - EOPNOTSUPP, the value of @a proto is unsupported; * - EINVAL, the value of @a proto is invalid. * * @see * <a href="http://www.opengroup.org/onlinepubs/000095399/functions/pthread_mutexattr_setprotocol.html"> * Specification.</a> * */static inline intpthread_mutexattr_setprotocol(pthread_mutexattr_t * attr, int proto){	spl_t s;	if (!attr)		return EINVAL;	xnlock_get_irqsave(&nklock, s);	if (!cobalt_obj_active(attr,COBALT_MUTEX_ATTR_MAGIC,pthread_mutexattr_t)) {		xnlock_put_irqrestore(&nklock, s);		return EINVAL;	}	switch (proto) {	default:		xnlock_put_irqrestore(&nklock, s);		return EINVAL;	case PTHREAD_PRIO_PROTECT:		xnlock_put_irqrestore(&nklock, s);		return EOPNOTSUPP;	case PTHREAD_PRIO_NONE:	case PTHREAD_PRIO_INHERIT:		break;	}	attr->protocol = proto;	xnlock_put_irqrestore(&nklock, s);	return 0;}
开发者ID:Lmaths,项目名称:xenomai-forge,代码行数:64,


示例16: XENO_BUGON

struct xnpholder *xnsynch_wakeup_this_sleeper(struct xnsynch *synch, struct xnpholder *holder){	struct xnthread *thread;	struct xnpholder *nholder;	spl_t s;	XENO_BUGON(NUCLEUS, testbits(synch->status, XNSYNCH_OWNER));	xnlock_get_irqsave(&nklock, s);	nholder = poppq(&synch->pendq, holder);	thread = link2thread(holder, plink);	thread->wchan = NULL;	trace_mark(xn_nucleus, synch_wakeup_this,		   "thread %p thread_name %s synch %p",		   thread, xnthread_name(thread), synch);	xnpod_resume_thread(thread, XNPEND);	xnlock_put_irqrestore(&nklock, s);	xnarch_post_graph_if(synch, 0, emptypq_p(&synch->pendq));	return nholder;}
开发者ID:gongguowang,项目名称:xenomai-1,代码行数:24,


示例17: rt_event_inquire

int rt_event_inquire(RT_EVENT *event, RT_EVENT_INFO *info){	int err = 0;	spl_t s;	xnlock_get_irqsave(&nklock, s);	event = xeno_h2obj_validate(event, XENO_EVENT_MAGIC, RT_EVENT);	if (!event) {		err = xeno_handle_error(event, XENO_EVENT_MAGIC, RT_EVENT);		goto unlock_and_exit;	}	strcpy(info->name, event->name);	info->value = event->value;	info->nwaiters = xnsynch_nsleepers(&event->synch_base);      unlock_and_exit:	xnlock_put_irqrestore(&nklock, s);	return err;}
开发者ID:chrmorais,项目名称:miniemc2,代码行数:24,


示例18: xnpipe_flush

int xnpipe_flush(int minor, int mode){	struct xnpipe_state *state;	int msgcount;	spl_t s;	if (minor < 0 || minor >= XNPIPE_NDEVS)		return -ENODEV;	state = &xnpipe_states[minor];	xnlock_get_irqsave(&nklock, s);	if (!testbits(state->status, XNPIPE_KERN_CONN)) {		xnlock_put_irqrestore(&nklock, s);		return -EBADF;	}	msgcount = countq(&state->outq) + countq(&state->inq);	if (mode & XNPIPE_OFLUSH)		state->ionrd -= xnpipe_flushq(state, outq, free_obuf, s);	if (mode & XNPIPE_IFLUSH)		xnpipe_flushq(state, inq, free_ibuf, s);	if (testbits(state->status, XNPIPE_USER_WSYNC) &&	    msgcount > countq(&state->outq) + countq(&state->inq)) {		__setbits(state->status, XNPIPE_USER_WSYNC_READY);		xnpipe_schedule_request();	}	xnlock_put_irqrestore(&nklock, s);	return 0;}
开发者ID:JackieXie168,项目名称:xenomai,代码行数:36,



注:本文中的xnlock_get_irqsave函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ xnlock_put_irqrestore函数代码示例
C++ xnew函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。