这篇教程C++ wake函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中wake函数的典型用法代码示例。如果您正苦于以下问题:C++ wake函数的具体用法?C++ wake怎么用?C++ wake使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了wake函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: eoprot_fun_ONSAY_mcextern void eoprot_fun_ONSAY_mc(const EOnv* nv, const eOropdescriptor_t* rd){ // marco.accame on 18 mar 2014: this function is called when a say<id32, data> rop is received // and the id32 is about the motion control endpoint. this function is common to every board. // it is used this function and not another one because inside the hostTransceiver object it was called: // eoprot_config_onsay_endpoint_set(eoprot_endpoint_motioncontrol, eoprot_fun_ONSAY_mc); // the aim of this function is to wake up a thread which is blocked because it has sent an ask<id32> // the wake up funtionality is implemented in two modes, depending on the wait mechanism used: // a. in initialisation, embObjMotionControl sets some values and then reads them back. // the read back sends an ask<id32, signature=0xaa000000>. in such a case the board sends back // a say<id32, data, signature = 0xaa000000>. thus, if the received signature is 0xaa000000, then // we must unblock using feat_signal_network_reply(). // b. during runtime, some methods send a blocking ask<id32> without signature. It is the case of instance // of getPidRaw() which waits with a eoThreadEntry::synch() call. in such a case the board send back a // normal say<id32, data> with nos signature. in this case we unlock with wake(). if(0xaa000000 == rd->signature) { // case a: if(fakestdbool_false == feat_signal_network_reply(eo_nv_GetBRD(nv), rd->id32, rd->signature)) { char str[256] = {0}; char nvinfo[128]; eoprot_ID2information(rd->id32, nvinfo, sizeof(nvinfo)); snprintf(str, sizeof(str), "eoprot_fun_ONSAY_mc() received an unexpected message w/ 0xaa000000 signature for %s", nvinfo); embObjPrintWarning(str); return; } } else { //case b: wake(nv); }}
开发者ID:Karma-Revolutions,项目名称:icub-main,代码行数:35,
示例2: LOGDvoid Looper::sendMessageAtTime(nsecs_t uptime, const sp<MessageHandler>& handler, const Message& message) {#if DEBUG_CALLBACKS LOGD("%p ~ sendMessageAtTime - uptime=%lld, handler=%p, what=%d", this, uptime, handler.get(), message.what);#endif size_t i = 0; { // acquire lock AutoMutex _l(mLock); size_t messageCount = mMessageEnvelopes.size(); while (i < messageCount && uptime >= mMessageEnvelopes.itemAt(i).uptime) { i += 1; } MessageEnvelope messageEnvelope(uptime, handler, message); mMessageEnvelopes.insertAt(messageEnvelope, i, 1); // Optimization: If the Looper is currently sending a message, then we can skip // the call to wake() because the next thing the Looper will do after processing // messages is to decide when the next wakeup time should be. In fact, it does // not even matter whether this code is running on the Looper thread. if (mSendingMessage) { return; } } // release lock // Wake the poll loop only when we enqueue a new message at the head. if (i == 0) { wake(); }}
开发者ID:13572293130,项目名称:aapt,代码行数:33,
示例3: ctrlc_setctrlc_set(int4 dummy_param){ int4 status; msgtype message; error_def(ERR_LASTFILCMPLD); if (!IS_MCODE_RUNNING) { message.arg_cnt = 4; message.def_opts = message.new_opts = 0; message.msg_number = ERR_LASTFILCMPLD; message.fp_cnt = 2; message.fp[0].n = strlen(source_file_name); message.fp[1].cp = source_file_name; sys$putmsg(&message, 0, 0, 0); } else if (!outofband) { if (ctrlc_on) { status = sys$setef(efn_outofband); assert(SS$_WASCLR == status); if (status != SS$_WASCLR && status != SS$_WASSET) GTMASSERT; ctrap_action_is = 0; outofband = ctrlc; xfer_table[xf_linefetch] = op_fetchintrrpt; xfer_table[xf_linestart] = op_startintrrpt; xfer_table[xf_zbfetch] = op_fetchintrrpt; xfer_table[xf_zbstart] = op_startintrrpt; xfer_table[xf_forchk1] = op_startintrrpt; xfer_table[xf_forloop] = op_forintrrpt; sys$wake(0,0); } }}
开发者ID:ChristyV,项目名称:fis-gtm,代码行数:35,
示例4: sendFlush void sendFlush(Args...args) { EnterCriticalSection(&mLock); send<T,Args...>(args...); LeaveCriticalSection(&mLock); wake(); }
开发者ID:Natman64,项目名称:d3dgl,代码行数:7,
示例5: wakevoid MythSystemIOHandler::insert(HANDLE h, QBuffer *buff){ m_pLock.lock(); m_pMap.insert(h, buff); m_pLock.unlock(); wake();}
开发者ID:mdda,项目名称:mythtv,代码行数:7,
示例6: convert_lockstatic int convert_lock(int mode){ int status; int old_mode = cur_mode; printf("converting to %d/n", mode); /* Lock it */ status = sys$enq(0, mode, &our_lksb, LCK$M_CONVERT | LCK$M_VALBLK, NULL, 0, /* parent */ compast_routine, 0, /* astp */ blockast_routine, PSL$C_USER, RSDM$K_PROCESS_RSDM_ID, 0); if (status != SS$_NORMAL) { printf("convert enq failed : %s/n", strerror(EVMSERR, status)); sys$wake(); } else { cur_mode = mode; status = 0; /* simulate Unix retcodes */ } return status;}
开发者ID:beekhof,项目名称:dlm,代码行数:33,
示例7: BuildFDsvoid MythSystemIOHandler::insert(int fd, QBuffer *buff){ m_pLock.lock(); m_pMap.insert(fd, buff); BuildFDs(); m_pLock.unlock(); wake();}
开发者ID:skerit,项目名称:mythtv,代码行数:8,
示例8: sleep/*** PCA9685 PWM set frequency prescale*/void PCA9685::_setPreScale(uint8_t prescale){ // must be in sleep mode to set the prescaler sleep(); // set the prescaler _write8bits(PCA9685_PRESCALE, prescale); wake();}
开发者ID:Kowalski22,项目名称:PCA9685,代码行数:11,
示例9: ALOGDvoid Looper::scheduleEpollRebuildLocked() { if (!mEpollRebuildRequired) {#if DEBUG_CALLBACKS ALOGD("%p ~ scheduleEpollRebuildLocked - scheduling epoll set rebuild", this);#endif mEpollRebuildRequired = true; wake(); }}
开发者ID:Bliss-Elite,项目名称:platform_system_core,代码行数:9,
示例10: wakevoid LLThread::unpause(){ if (mPaused) { mPaused = 0; } wake(); // wake up the thread if necessary}
开发者ID:Nora28,项目名称:imprudence,代码行数:9,
示例11: guardvoid Evloop::queueInLoop(PendFuncType &&cb){ { std::lock_guard<std::mutex> guard(mutex_); pendfctrList_.push_back(cb); } if(!isInLoopThread() || inHandingPendingFctrs_) wake();}
开发者ID:echoyuanliang,项目名称:mypratice,代码行数:10,
示例12: turn_on_led_and_reset_timervoid turn_on_led_and_reset_timer(void) { orange_led_on = orange_led_on ? 0 : 1; /* in handler mode, don't use svc call */ current_millis = get_current_millis(); if (current_millis - start_millis > 30000) { time_remaining = 0; } else { wake(flash_orange_led_pid); }}
开发者ID:skarger,项目名称:sos,代码行数:11,
示例13: flush void flush() { // FIXME: On Wine, a glFlush may cause a repaint of the window from the // GL's front buffer, which is fine except for the added processing we // don't want. However, it would be nice to ensure OpenGL is processing // all the commands that got sent to it up to this point. //sendFlush<FlushGLCmd>(); EnterCriticalSection(&mLock); LeaveCriticalSection(&mLock); wake(); }
开发者ID:Natman64,项目名称:d3dgl,代码行数:11,
示例14: unlockstatic void unlock(){ int status; status = sys$deq(our_lksb.sb_lkid, NULL,0,0,0); if (status != SS$_NORMAL) { printf("denq failed : %s/n", strerror(EVMSERR, status)); sys$wake(); }}
开发者ID:beekhof,项目名称:dlm,代码行数:11,
示例15: wakevoid LLQueuedThread::incQueue(){ // Something has been added to the queue if (!isPaused()) { if (mThreaded) { wake(); // Wake the thread up if necessary. } }}
开发者ID:CasperWarden,项目名称:CasperViewer,代码行数:11,
示例16: whilevoid Looper::wakeAndLock() { mLock.lock(); mWaiters += 1; while (mPolling) { wake(); mAwake.wait(mLock); } mWaiters -= 1; if (mWaiters == 0) { mResume.signal(); }}
开发者ID:13572293130,项目名称:aapt,代码行数:14,
示例17: timeoutSetvoid Adafruit_Thermal::begin(int heatTime) { // The printer can't start receiving data immediately upon power up -- // it needs a moment to cold boot and initialize. Allow at least 1/2 // sec of uptime before printer can receive data. timeoutSet(500000L); wake(); reset(); // ESC 7 n1 n2 n3 Setting Control Parameter Command // n1 = "max heating dots" 0-255 -- max number of thermal print head // elements that will fire simultaneously. Units = 8 dots (minus 1). // Printer default is 7 (64 dots, or 1/6 of 384-dot width), this code // sets it to 11 (96 dots, or 1/4 of width). // n2 = "heating time" 3-255 -- duration that heating dots are fired. // Units = 10 us. Printer default is 80 (800 us), this code sets it // to value passed (default 120, or 1.2 ms -- a little longer than // the default because we've increased the max heating dots). // n3 = "heating interval" 0-255 -- recovery time between groups of // heating dots on line; possibly a function of power supply. // Units = 10 us. Printer default is 2 (20 us), this code sets it // to 40 (throttled back due to 2A supply). // More heating dots = more peak current, but faster printing speed. // More heating time = darker print, but slower printing speed and // possibly paper 'stiction'. More heating interval = clearer print, // but slower printing speed. writeBytes(ASCII_ESC, '7'); // Esc 7 (print settings) writeBytes(11, heatTime, 40); // Heating dots, heat time, heat interval // Print density description from manual: // DC2 # n Set printing density // D4..D0 of n is used to set the printing density. Density is // 50% + 5% * n(D4-D0) printing density. // D7..D5 of n is used to set the printing break time. Break time // is n(D7-D5)*250us. // (Unsure of the default value for either -- not documented)#define printDensity 10 // 100% (? can go higher, text is darker but fuzzy)#define printBreakTime 2 // 500 uS writeBytes(ASCII_DC2, '#', (printBreakTime << 5) | printDensity); dotPrintTime = 30000; // See comments near top of file for dotFeedTime = 2100; // an explanation of these values. maxChunkHeight = 256;}
开发者ID:AmesianX,项目名称:arduino,代码行数:48,
示例18: timeoutSetvoid Adafruit_Thermal::begin(SERIAL_IMPL* serial, int heatTime, int maxHeatingDots, int heatingInterval, int printDensity, int printBreakTime) { _printer = serial; // The printer can't start receiving data immediately upon power up -- // it needs a moment to cold boot and initialize. Allow at least 1/2 // sec of uptime before printer can receive data. timeoutSet(500000L); wake(); reset(); // Description of print settings from page 23 of the manual: // ESC 7 n1 n2 n3 Setting Control Parameter Command // Decimal: 27 55 n1 n2 n3 // Set "max heating dots", "heating time", "heating interval" // n1 = 0-255 Max printing dots, Unit (8dots), Default: 7 (64 dots) // n2 = 3-255 Heating time, Unit (10us), Default: 80 (800us) // n3 = 0-255 Heating interval, Unit (10us), Default: 2 (20us) // The more max heating dots, the more peak current will cost // when printing, the faster printing speed. The max heating // dots is 8*(n1+1). The more heating time, the more density, // but the slower printing speed. If heating time is too short, // blank page may occur. The more heating interval, the more // clear, but the slower printing speed. writeBytes(27, 55); // Esc 7 (print settings) writeBytes(maxHeatingDots); // Heating dots (20=balance of darkness vs no jams) writeBytes(heatTime); // Library default = 255 (max) writeBytes(heatingInterval); // Heat interval (500 uS = slower, but darker) // Description of print density from page 23 of the manual: // DC2 # n Set printing density // Decimal: 18 35 n // D4..D0 of n is used to set the printing density. Density is // 50% + 5% * n(D4-D0) printing density. // D7..D5 of n is used to set the printing break time. Break time // is n(D7-D5)*250us. // (Unsure of the default value for either -- not documented) writeBytes(18, 35); // DC2 # (print density) writeBytes((printBreakTime << 5) | printDensity); dotPrintTime = 30000; // See comments near top of file for dotFeedTime = 2100; // an explanation of these values. maxChunkHeight = 1;}
开发者ID:ltempier,项目名称:adafruit_thermal_sparkcore,代码行数:46,
示例19: sp_once_ast/***++** ROUTINE: sp_once_ast**** FUNCTIONAL DESCRIPTION:****** RETURNS: cond_value, longword (unsigned), write only, by value**** PROTOTYPE:**** sp_once(struct ONCE *ctx)**** IMPLICIT INPUTS: None.**** IMPLICIT OUTPUTS: None.**** COMPLETION CODES:** SS$_NORMAL: normal successful completion** SS$_NONEXPR: subprocess doesn't exist any more**** SIDE EFFECTS: None.****--*/static unsigned int sp_once_ast(void *once) { struct ONCE *ctx = once; struct dsc$descriptor rcvstr; INIT_DYNDESC(rcvstr); while (OK(sp_receive(&ctx->spctx, &rcvstr, 0))) { if (rcvstr.dsc$w_length > ctx->eom_len && strncmp(rcvstr.dsc$a_pointer, ctx->eom, ctx->eom_len) == 0) { ctx->command_complete = 1; sys$wake(0,0); break; } (ctx->actrtn)(ctx->param, &rcvstr); } str$free1_dx(&rcvstr); return SS$_NORMAL;} /* sp_once_ast */
开发者ID:SysMan-One,项目名称:mmk,代码行数:43,
示例20: mutex_unlockvoid mutex_unlock(mutex * m){ uint64_t v = disableScheduler(); MutexNode * mn = mutexnode_getbyid(m->id); if(mn->waitn > 0){ pidnode * pidn = mn->first; wake(pidn->pid); if(mn->waitn == 1){ mn->first = mn->last = NULL; } else { mn->first = pidn->next; } la_free(pidn); mn->waitn --; } else { itryunlock(&(m->m)); } enableScheduler(v);}
开发者ID:saques,项目名称:x64-Kernel,代码行数:18,
示例21: whilevoid Scheduler::checkFutures(){ auto it = _futures.begin(); while (it != _futures.end()) { if (it->first->ready()) { wake(it->second); it->second->_future = it->first; it = _futures.erase(it); } else { it++; } }}
开发者ID:gaolizhou,项目名称:cosche,代码行数:18,
示例22: ALOGDvoid Poll::sendMessageAtTime(nsecs_t uptime, const MessageHandler& handler, const Message& message) {#if DEBUG_CALLBACKS ALOGD("%p ~ sendMessageAtTime - uptime=%lld, handler=%p, what=%d", this, uptime, handler.get(), message.what);#endif size_t i = 0; { // acquire lock AutoMutex _l(mLock); //more .... } // release lock // Wake the poll loop only when we enqueue a new message at the head. if (i == 0) { wake(); }}
开发者ID:chenglanjudy,项目名称:android_native_threadmanager,代码行数:18,
示例23: whilevoid UARTSerial::rx_irq(void){ bool was_empty = _rxbuf.empty(); /* Fill in the receive buffer if the peripheral is readable * and receive buffer is not full. */ while (SerialBase::readable()) { char data = SerialBase::_base_getc(); if (!_rxbuf.full()) { _rxbuf.push(data); } else { /* Drop - can we report in some way? */ } } /* Report the File handler that data is ready to be read from the buffer. */ if (was_empty && !_rxbuf.empty()) { wake(); }}
开发者ID:NXPmicro,项目名称:mbed,代码行数:20,
示例24: eoprot_fun_UPDT_mc_joint_cmmnds_setpoint// marco.accame: the pc104 should send set<id32_cmmnd_setpoint, value_cmmnd_setpoint> and never send ask<id32_cmmnd_setpoint>.// the cmmnd variables should be write-only ....// thus it should never receive say<id32_cmmnd_setpoint, value> or sig<id32_cmmnd_setpoint, value>.// the reason is that the ems board manages the cmmd by writing the value_cmmnd_setpoint in its ram, but then it does not guarantee// that the value stays unchanged. also, it may be that many sepoints of different kind are sent. in this case the last overwrite the previous,// best way to know is to have a status variable whcih keeps the last received setpoint of some kind.extern void eoprot_fun_UPDT_mc_joint_cmmnds_setpoint(const EOnv* nv, const eOropdescriptor_t* rd){ eOmc_setpoint_t *setpoint_got = (eOmc_setpoint_t*) rd->data; static int32_t zero = 360; static prev = 0; int32_t pos;// printf("Callback recv setpoint: /n"); uint16_t *checkProg = (uint16_t*) setpoint_got;// printf("Prog Num %d/n", checkProg[1]); pos = (int32_t)(setpoint_got->to.position.value / DEG_2_ICUBDEG) + zero;// printf("position %d/n", pos);// printf("velocity %d/n", setpoint_got->to.position.withvelocity); if( (checkProg[1] - prev) != 1) printf(">>>>>>Missing packet!! prev was %d, actual is %d (missing 0x%04X) <<<<</n", prev, checkProg[1], prev+1); prev = checkProg[1]; wake(nv);}
开发者ID:Karma-Revolutions,项目名称:icub-main,代码行数:26,
示例25: wake Thread::~Thread() { _run = false; if (linkedlist_node_hanble) { threads_mutex->lock(); threads->remove(linkedlist_node_hanble); if (thread) { if (status == THREAD_WAITING) wake(); } linkedlist_node_hanble = 0; threads_mutex->release(); if (thread) pthread_join(thread, 0); } }
开发者ID:ngrawlings,项目名称:libNRCore,代码行数:21,
示例26: whilevoid UARTSerial::rx_irq(void){ bool was_empty = _rxbuf.empty(); /* Fill in the receive buffer if the peripheral is readable * and receive buffer is not full. */ while (!_rxbuf.full() && SerialBase::readable()) { char data = SerialBase::_base_getc(); _rxbuf.push(data); } if (_rx_irq_enabled && _rxbuf.full()) { SerialBase::attach(NULL, RxIrq); _rx_irq_enabled = false; } /* Report the File handler that data is ready to be read from the buffer. */ if (was_empty && !_rxbuf.empty()) { wake(); }}
开发者ID:helmut64,项目名称:mbed-os,代码行数:21,
示例27: MojAssertMojErr MojGmainReactor::notify(MojSockT sock, SockSignal::SlotRef slot, guint events, SockSignal SockInfo::* sig){ MojAssert(sock != MojInvalidSock); MojAssert(m_mainLoop.get()); MojThreadGuard guard(m_mutex); MojAssert(m_sources.contains(sock)); SourceMap::ConstIterator source = m_sources.find(sock); if (source == m_sources.end()) MojErrThrow(MojErrNotFound); SockInfo* info = (*source)->m_info; (info->*sig).connect(slot); guint newEvents = info->m_pollFd.events | events; if (info->m_pollFd.events != newEvents) { info->m_pollFd.events = (gushort) newEvents; wake(); } return MojErrNone;}
开发者ID:anttiharju-owo,项目名称:db8,代码行数:21,
示例28: clock_nanosleepintclock_nanosleep(clockid_t clockid, int flags, const struct timespec *req, struct timespec *rem){ struct freebsd_timespec ftp = {req->tv_sec, req->tv_nsec}; int i, ret, timeout; struct thread *thread; /* we could support these but not needed */ if (flags != 0 || rem != NULL) { errno = EINVAL; return -1; } if (__platform_npoll == 0) { return __platform_nanosleep(&ftp, NULL); } /* use poll instead as we might have network events */ timeout = req->tv_sec * 1000 + req->tv_nsec / 1000000; ret = __platform_poll(__platform_pollfd, __platform_npoll, timeout); if (ret == -1) { errno = EINVAL; return -1; } if (ret == 0) return 0; for (i = 0; i < __platform_npoll; i++) { if (__platform_pollfd[i].revents) { thread = __franken_fd[__platform_pollfd[i].fd].wake; if (thread) wake(thread); } } return 0;}
开发者ID:asb,项目名称:frankenlibc,代码行数:40,
示例29: atapi_regs[ATAPI_REG_CMDSTATUS] = ATAPI_STAT_DRDY; atapi_regs[ATAPI_REG_INTREASON] = ATAPI_INTREASON_IO|ATAPI_INTREASON_COMMAND; } else { // indicate data ready: set DRQ and DMA ready, and IO in INTREASON if (atapi_regs[ATAPI_REG_FEATURES] & 0x01) // DMA feature { atapi_regs[ATAPI_REG_CMDSTATUS] = ATAPI_STAT_BSY | ATAPI_STAT_DRDY | ATAPI_STAT_SERVDSC; } else { atapi_regs[ATAPI_REG_CMDSTATUS] = ATAPI_STAT_DRQ | ATAPI_STAT_SERVDSC | ATAPI_STAT_DRQ; } atapi_regs[ATAPI_REG_INTREASON] = ATAPI_INTREASON_IO; } switch( phase ) { case SCSI_PHASE_DATAOUT: atapi_cdata_wait = atapi_xferlen; break; } // perform special ATAPI processing of certain commands switch (atapi_data[0]&0xff) { case 0x00: // BUS RESET / TEST UNIT READY case 0xbb: // SET CDROM SPEED atapi_regs[ATAPI_REG_CMDSTATUS] = 0; break;
开发者ID:coinhelper,项目名称:jsmess,代码行数:31,
注:本文中的wake函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ wake_lock函数代码示例 C++ waitqueue_active函数代码示例 |