void * child(void *v) { unsigned long long index_f ; unsigned int index_0 ; sem_wait(&sem); // down() while(chains < table_length){ sem_post(&sem); // up() sem_wait(&sem2); // down() i_index++ ; index_0 = i_index ; sem_post(&sem2); // up() index_f = generate_chain(index_0,num_table); sem_wait(&sem); // down() if(get3(&hash_table,index_f)){ coll++; }else{ put3(&hash_table,index_f,index_0); chains++; } } sem_post(&sem); // up() pthread_exit(0); }
int win(int a[]){ int b[11]; int i=0 ; int ret= 0; set(b); for(i=0 ; i< 11 ; i++){ if ( valid1(i,a) ){ copy(b,a); put1(i,b); ret|= !win(b); } if ( valid2(i,a) ){ copy(b,a); put2(i,b); ret|= !win(b); } if ( valid3(i,a) ){ copy(b,a); put3(i,b); ret|= !win(b); } } return ret; }
int main(void) { fb_info_t fb; mevent_t mevent; int fd, mfd; int m_x, m_y; if((fd = open("/dev/fb0", O_RDWR)) < 0) { perror("open /dev/fb0 error:"); exit(1); } if(-1L == ioctl(fd, FBIOGET_VSCREENINFO, &(fb.fb_var))) { printf("ioctl FBIOGET_VSCREENINFO\n"); exit(1); } fb.w = fb.fb_var.xres; fb.h = fb.fb_var.yres; fb.bpp = fb.fb_var.bits_per_pixel; fb.fd = fd; fb.fb_mem = mmap(NULL, fb.w*fb.h*fb.bpp/8, PROT_READ|PROT_WRITE, MAP_SHARED, fb.fd,0); if(MAP_FAILED == fb.fb_mem) { printf("mmap error!"); exit(1); } m_x = fb.w / 2; m_y = fb.h / 2; put1(&fb,0xFFFF); put2(&fb,0xFFFF); put3(&fb,0xFFFF); //Step 1 mouse_save(&fb, m_x, m_y); //Step 2 mouse_draw_take(&fb, m_x, m_y); mfd = open("/dev/input/mice", O_RDWR | O_NONBLOCK); if(mfd < 0) { perror("open /dev/input/mice error:"); exit(1); } while(1) { if(mouse_parse(mfd, &mevent) == 0) { //Step 3 mouse_restore(&fb, m_x, m_y); m_x += mevent.dx; m_y += mevent.dy; if(m_x < 0) m_x = 0; if(m_x > (fb.w-C_WIDTH-1)) m_x = fb.w - C_WIDTH-1; if(m_y < 0) m_y = 0; if(m_y > (fb.h-C_HEIGHT-1)) m_y = fb.h-C_HEIGHT-1; if((m_x > x_start_l)&&(m_x < x_start_r)&&(m_y > y_start_l)&&(m_y < y_start_r)) { mouse_save(&fb, m_x, m_y); mouse_draw_load(&fb, m_x, m_y); if(mevent.button == 1) { /*开始*/ printf("star\n"); // exit(1); } } else if((m_x > x_list_l)&&(m_x < x_list_r)&&(m_y > y_list_l)&&(m_y < y_list_r)) { mouse_save(&fb, m_x, m_y); mouse_draw_load(&fb, m_x, m_y); if(mevent.button == 1) { /*列表*/ printf("list\n"); // exit(1); } } else if((m_x > x_quit_l)&&(m_x < x_quit_r)&&(m_y > y_quit_l)&&(m_y < y_quit_r)) { mouse_save(&fb, m_x, m_y); mouse_draw_load(&fb, m_x, m_y); if(mevent.button == 1) { /*退出*/ printf("exit\n"); // exit(1); } } else { mouse_save(&fb, m_x, m_y); mouse_draw_take(&fb, m_x, m_y); } } } close(fb.fd); munmap(fb.fb_mem,fb.w*fb.h*fb.bpp/8); return 0; }