本文整理汇总了C++中do_wait函数的典型用法代码示例。如果您正苦于以下问题:C++ do_wait函数的具体用法?C++ do_wait怎么用?C++ do_wait使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了do_wait函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: kcinth
int kcinth()
{
u16 segment, offset;
int a,b,c,d, r;
segment = running->uss;
offset = running->usp;
a = get_word(segment, offset + 2*PA);
b = get_word(segment, offset + 2*PB);
c = get_word(segment, offset + 2*PC);
d = get_word(segment, offset + 2*PD);
/*printf("interupthandler a = %d\n", a);
printf("b = %d\n", b);
printf("string: %s\n", c);
printf("n = %d\n", d);*/
switch(a){
case 0 : r = running->pid; break;
case 1 : r = do_ps(); break;
case 2 : r = kchname(b); break;
case 3 : r = kmode(); break;
case 4 : r = tswitch(); break;
case 5 : r = do_wait(b); break;
case 6 : r = do_exit(b); break;
case 7 : r = fork(); break;
case 8 : r = exec(b); break;
/****** these are YOUR pipe functions ************/
case 30 : r = kpipe(b); break;
case 31 : r = read_pipe(b,c,d); break;
case 32 : r = write_pipe(b,c,d); break;
case 33 : r = close_pipe(b); break;
case 34 : r = pfd(); break;
/**************** end of pipe functions ***********/
case 90: r = getc(); break;
case 91: color=running->pid+11;
r = putc(b); break;
case 99: do_exit(b); break;
default: printf("invalid syscall # : %d\n", a);
}
//printf("interupthandler r = %d\n", r);
//getc();
put_word(r, segment, offset + 2*AX);
}
开发者ID:Cj-muse,项目名称:Lab6,代码行数:46,代码来源:int.c
示例2: excrate_handle
void excrate_handle(struct excrate *e)
{
assert(e->pid != 0);
if (e->pe == NULL)
return;
if (e->pe->revents == 0)
return;
if (read_from_pipe(e) != -1)
return;
do_wait(e);
fire(&e->completion, NULL);
list_del(&e->rig);
excrate_release(e); /* may invalidate e */
}
开发者ID:igordertigor,项目名称:xwax,代码行数:18,代码来源:excrate.c
示例3: gomp_barrier_wait_end
void
gomp_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t state)
{
if (__builtin_expect (state & BAR_WAS_LAST, 0))
{
/* Next time we'll be awaiting TOTAL threads again. */
bar->awaited = bar->total;
__atomic_store_n (&bar->generation, bar->generation + BAR_INCR,
MEMMODEL_RELEASE);
futex_wake ((int *) &bar->generation, INT_MAX);
}
else
{
do
do_wait ((int *) &bar->generation, state);
while (__atomic_load_n (&bar->generation, MEMMODEL_ACQUIRE) == state);
}
}
开发者ID:krichter722,项目名称:gcc,代码行数:18,代码来源:bar.c
示例4: gomp_team_barrier_wait_end
void
gomp_team_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t state)
{
unsigned int generation, gen;
if (__builtin_expect (state & BAR_WAS_LAST, 0))
{
/* Next time we'll be awaiting TOTAL threads again. */
struct gomp_thread *thr = gomp_thread ();
struct gomp_team *team = thr->ts.team;
bar->awaited = bar->total;
team->work_share_cancelled = 0;
if (__builtin_expect (team->task_count, 0))
{
gomp_barrier_handle_tasks (state);
state &= ~BAR_WAS_LAST;
}
else
{
state &= ~BAR_CANCELLED;
state += BAR_INCR - BAR_WAS_LAST;
__atomic_store_n (&bar->generation, state, MEMMODEL_RELEASE);
futex_wake ((int *) &bar->generation, INT_MAX);
return;
}
}
generation = state;
state &= ~BAR_CANCELLED;
do
{
do_wait ((int *) &bar->generation, generation);
gen = __atomic_load_n (&bar->generation, MEMMODEL_ACQUIRE);
if (__builtin_expect (gen & BAR_TASK_PENDING, 0))
{
gomp_barrier_handle_tasks (state);
gen = __atomic_load_n (&bar->generation, MEMMODEL_ACQUIRE);
}
generation |= gen & BAR_WAITING_FOR_TASK;
}
while (gen != state + BAR_INCR);
}
开发者ID:krichter722,项目名称:gcc,代码行数:43,代码来源:bar.c
示例5: discard_wait
static waitres_t
discard_wait(ptrace_context *ctx)
{
for(;;) {
waitres_t wres = do_wait(ctx, false);
switch (wres) {
case WR_NOTHING:
case WR_FINISHED:
case WR_NEED_DETACH:
return wres;
case WR_STOPPED:
ptrace_verbose(PTRACE_CONT, ctx->pid, 0,
ctx->stop_signal == SIGSTOP ? 0 : ctx->stop_signal);
break;
}
}
}
开发者ID:KurSh,项目名称:crxprof,代码行数:19,代码来源:main.c
示例6: kcinth
int kcinth()
{
u16 segment, offset;
int a,b,c,d, r;
segment = running->uss;
offset = running->usp;
a = get_word(segment, offset + 2*PA);
b = get_word(segment, offset + 2*PB);
c = get_word(segment, offset + 2*PC);
d = get_word(segment, offset + 2*PD);
switch(a){
case 0 : r = running->pid; break;
case 1 : r = do_ps(); break;
case 2 : r = chname(b); break;
case 3 : r = kmode(); break;
case 4 : r = tswitch(); break;
case 5 : r = do_wait(b); break;
case 6 : r = do_exit(b); break;
case 7 : r = fork(); break;
case 8 : r = exec(b); break;
case 9 : r = vfork(); break;
case 30 : r = kpipe(b); break;
case 31 : r = read_pipe(b,c,d); break;
case 32 : r = write_pipe(b,c,d); break;
case 33 : r = close_pipe(b); break;
case 34 : r = pfd(); break;
case 90: r = getc(); break;
case 91: color=running->pid+11;
r = putc(b); break;
case 99: do_exit(b); break;
default: printf("invalid syscall # : %d\n", a);
}
put_word(r, segment, offset + 2*AX);
}
开发者ID:thomdabeast,项目名称:CS460-1,代码行数:42,代码来源:int.c
示例7: gomp_barrier_wait_end
void
gomp_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t state)
{
if (__builtin_expect ((state & 1) != 0, 0))
{
/* Next time we'll be awaiting TOTAL threads again. */
bar->awaited = bar->total;
atomic_write_barrier ();
bar->generation += 4;
futex_wake ((int *) &bar->generation, INT_MAX);
}
else
{
unsigned int generation = state;
do
do_wait ((int *) &bar->generation, generation);
while (bar->generation == generation);
}
}
开发者ID:fabio-d,项目名称:xc16plusplus-source,代码行数:20,代码来源:bar.c
示例8: body
int body()
{ char c;
while(1){
printf("\n\n\n");
ps();
printf("I am Proc %d in body()\n", running->pid);
printf("Input a char : [s|q|f|z|a|w]: ");
c=getc();
switch(c){
case 's': tswitch(); break;
case 'q': do_exit(); break;
case 'f': kfork(); break;
case 'z': do_sleep(); break;
case 'a': do_wakeup(); break;
case 'w': do_wait(); break;
default : break;
}
}
}
开发者ID:shank8,项目名称:CS460,代码行数:20,代码来源:t.c
示例9: gomp_team_barrier_wait_end
void
gomp_team_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t state)
{
unsigned int generation, gen;
if (__builtin_expect ((state & 1) != 0, 0))
{
/* Next time we'll be awaiting TOTAL threads again. */
struct gomp_thread *thr = gomp_thread ();
struct gomp_team *team = thr->ts.team;
bar->awaited = bar->total;
if (__builtin_expect (team->task_count, 0))
{
gomp_barrier_handle_tasks (state);
state &= ~1;
}
else
{
__atomic_store_n (&bar->generation, state + 3, MEMMODEL_RELEASE);
futex_wake ((int *) &bar->generation, INT_MAX);
return;
}
}
generation = state;
do
{
do_wait ((int *) &bar->generation, generation);
gen = __atomic_load_n (&bar->generation, MEMMODEL_ACQUIRE);
if (__builtin_expect (gen & 1, 0))
{
gomp_barrier_handle_tasks (state);
gen = __atomic_load_n (&bar->generation, MEMMODEL_ACQUIRE);
}
if ((gen & 2) != 0)
generation |= 2;
}
while (gen != state + 4);
}
开发者ID:MaddTheSane,项目名称:haiku-buildtools,代码行数:40,代码来源:bar.c
示例10: body
int body()
{
char c;
printf("proc %d resumes to body()\n", running->pid);
while(1)
{
printf("-----------------------------------------\n");
//print freeList;
printf("Free List:\n");
printQueue(freeList);
// print readyQueue;
printf("Ready Queue:\n");
printQueue(readyQueue);
// print sleepList;
printf("Sleep List:\n");
// printSleepQueue(sleepList);
printSleepQueue(sleepList);
printf("-----------------------------------------\n");
printf("proc %d[%d] running: parent=%d\n",
running->pid, running->priority, running->ppid);
printf("type a command [s|f|q|w| u ] : ");
c = getc();
printf("%c\n", c);
switch(c){
case 's' : do_tswitch(); break;
case 'f' : do_kfork(); break;
case 'q' : do_exit(); break;
case 'w' : do_wait(); break;
case 'u' :
// printf("Running->uss: %x\n", running->uss);
// printf("Running->usp: %x\n", running->usp);
goUmode();
break; // let process goUmode
}
}
}
开发者ID:JohnnySmith1,项目名称:Cpts-349-Work,代码行数:39,代码来源:t.c
示例11: gomp_set_nest_lock_25
void
gomp_set_nest_lock_25 (omp_nest_lock_25_t *lock)
{
int otid, tid = gomp_tid ();
while (1)
{
otid = __sync_val_compare_and_swap (&lock->owner, 0, tid);
if (otid == 0)
{
lock->count = 1;
return;
}
if (otid == tid)
{
lock->count++;
return;
}
do_wait (&lock->owner, otid);
}
}
开发者ID:ucberkeley,项目名称:lithe,代码行数:22,代码来源:lock.c
示例12: task_mm
/**
* <Ring 1> The main loop of TASK MM.
*
*****************************************************************************/
PUBLIC void task_mm()
{
init_mm();
while (1) {
send_recv(RECEIVE, ANY, &mm_msg);
int src = mm_msg.source;
int reply = 1;
int msgtype = mm_msg.type;
switch (msgtype) {
case FORK:
mm_msg.RETVAL = do_fork();
break;
case EXIT:
do_exit(mm_msg.STATUS);
reply = 0;
break;
case EXEC:
mm_msg.RETVAL = do_exec();
break;
case WAIT:
do_wait();
reply = 0;
break;
default:
dump_msg("MM::unknown msg", &mm_msg);
assert(0);
break;
}
if (reply) {
mm_msg.type = SYSCALL_RET;
send_recv(SEND, src, &mm_msg);
}
}
}
开发者ID:helloKM,项目名称:OSDesign,代码行数:42,代码来源:main.c
示例13: do_lipo
static void
do_lipo (int start_outfile_index, const char *out_file)
{
int i, j, pid;
char *errmsg_fmt, *errmsg_arg;
/* Populate lipo arguments. */
lipo_argv[0] = "lipo";
lipo_argv[1] = "-create";
lipo_argv[2] = "-o";
lipo_argv[3] = out_file;
/* Already 4 lipo arguments are set. Now add all lipo inputs. */
j = 4;
for (i = 0; i < num_arches; i++)
lipo_argv[j++] = out_files[start_outfile_index + i];
/* Add the NULL at the end. */
lipo_argv[j++] = NULL;
#ifdef DEBUG
debug_command_line (lipo_argv, j);
#endif
if (verbose_flag)
{
for (i = 0; lipo_argv[i]; i++)
fprintf (stderr, "%s ", lipo_argv[i]);
fprintf (stderr, "\n");
}
pid = pexecute (lipo_argv[0], (char *const *)lipo_argv, progname, NULL, &errmsg_fmt,
&errmsg_arg, PEXECUTE_SEARCH | PEXECUTE_ONE);
if (pid == -1)
pfatal_pexecute (errmsg_fmt, errmsg_arg);
do_wait (pid, lipo_argv[0]);
}
开发者ID:IntegerCompany,项目名称:linaro-android-gcc,代码行数:38,代码来源:driverdriver.c
示例14: gomp_set_nest_lock_25
void
gomp_set_nest_lock_25 (omp_nest_lock_25_t *lock)
{
int otid, tid = gomp_tid ();
while (1)
{
otid = 0;
if (__atomic_compare_exchange_n (&lock->owner, &otid, tid, false,
MEMMODEL_ACQUIRE, MEMMODEL_RELAXED))
{
lock->count = 1;
return;
}
if (otid == tid)
{
lock->count++;
return;
}
do_wait (&lock->owner, otid);
}
}
开发者ID:abumaryam,项目名称:gcc,代码行数:23,代码来源:lock.c
示例15: kern_init
int
kern_init(void) {
extern char edata[], end[];
memset(edata, 0, end - edata);
cons_init(); // init the console
const char *message = "(THU.CST) os is loading ...";
cprintf("%s\n\n", message);
print_kerninfo();
pmm_init(); // init physical memory management
pic_init(); // init interrupt controller
idt_init(); // init interrupt descriptor table
proc_init(); // init process table
clock_init(); // init clock interrupt
intr_enable(); // enable irq interrupt
schedule(); //let init proc run
while (do_wait(1, NULL) == 0) {
schedule();
}
}
开发者ID:151706061,项目名称:ucore_lab,代码行数:23,代码来源:init.c
示例16: body
int body(){
char c;
printf("proc %d resumes to body()\n", running->pid);
while(1){
printf("-----------------------------------------\n");
printList("freelist ", freeList);
printList("readyQueue", readyQueue);
printList("sleepList ", sleepList);
printf("-----------------------------------------\n");
printf("proc %d running: parent = %d enter a char [s|f|w|q|u] : ",
running->pid, running->parent->pid);
c = getc(); printf("%c\n", c);
switch(c){
case 's' : do_tswitch(); break;
case 'f' : do_kfork(); break;
case 'w' : do_wait(0); break;
case 'q' : do_exit(100); break;
case 'u' : goUmode(); break;
}
}
}
开发者ID:bhanderson,项目名称:cpts460,代码行数:23,代码来源:t.c
示例17: kcinth
int kcinth()
{
ushort seg, off, r;
int x, y, z, w;
seg = running->uss; off = running->usp;
x = get_word(seg, off + 2*13);
y = get_word(seg, off + 2*14);
z = get_word(seg, off + 2*15);
w = get_word(seg, off + 2*16);
switch(x){
case 0 : r = running->pid; break;
case 1 : r = do_ps(); break;
case 2 : r = chname(y); break;
case 3 : r = kmode(); break;
case 4 : r = tswitch(); break;
case 5 : r = do_wait(y); break;
case 6 : r = do_exit(y); break;
case 7 : r = ufork(); break;
case 8 : r = exec(y); break;
case 9 : r = chcolor(y); break;
case 10: r = putc(y); break;
case 11: mysleep(y); break;
case 99 : do_exit(y); break;
default: printf("invalid syscall # : %d\n", x);
break;
}
put_word(r, seg, off + 2*8);
}
开发者ID:bhanderson,项目名称:cpts460,代码行数:37,代码来源:int.c
示例18: gomp_team_barrier_wait_end
void
gomp_team_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t state)
{
unsigned int generation;
if (__builtin_expect ((state & 1) != 0, 0))
{
/* Next time we'll be awaiting TOTAL threads again. */
struct gomp_thread *thr = gomp_thread ();
struct gomp_team *team = thr->ts.team;
bar->awaited = bar->total;
atomic_write_barrier ();
if (__builtin_expect (team->task_count, 0))
{
gomp_barrier_handle_tasks (state);
state &= ~1;
}
else
{
bar->generation = state + 3;
futex_wake ((int *) &bar->generation, INT_MAX);
return;
}
}
generation = state;
do
{
do_wait ((int *) &bar->generation, generation);
if (__builtin_expect (bar->generation & 1, 0))
gomp_barrier_handle_tasks (state);
if ((bar->generation & 2))
generation |= 2;
}
while (bar->generation != state + 4);
}
开发者ID:fabio-d,项目名称:xc16plusplus-source,代码行数:36,代码来源:bar.c
示例19: body
int body()
{
char c;
printf("proc %d resumes to body()\n", running->pid);
while(1)
{
printf("-----------------------------------------\n");
//print freeList;
printf("Free List:\n");
printQueue(freeList);
// print readyQueue;
printf("Ready Queue:\n");
printQueue(readyQueue);
// print sleepList;
printf("Sleep List:\n");
printSleepQueue(sleepList);
printf("-----------------------------------------\n");
printf("proc %d[%d] running: parent=%d\n",
running->pid, running->priority, running->ppid);
printf("type a char [s|f|q| p|z|a| w ] : ");
c = getc();
printf("%c\n", c);
switch(c){
case 's' : do_tswitch(); break;
case 'f' : do_kfork(); break;
case 'q' : do_exit(); break;
case 'p' : do_ps(); break;
case 'z' : do_sleep(); break;
case 'a' : do_wakeup(); break;
case 'w' : do_wait(); break;
}
}
}
开发者ID:JohnnySmith1,项目名称:Cpts-349-Work,代码行数:36,代码来源:t.c
示例20: APR_DECLARE
APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond,
apr_thread_mutex_t *mutex,
apr_interval_time_t timeout)
{
return do_wait(cond, mutex, timeout);
}
开发者ID:Garridon,项目名称:windowsrtdev,代码行数:6,代码来源:thread_cond.c
注:本文中的do_wait函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论