亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? thr-mach.c

?? GCC編譯器源代碼
?? C
字號:
/* GNU Objective C Runtime Thread Implementation   Copyright (C) 1996, 1997 Free Software Foundation, Inc.   Contributed by Galen C. Hunt (gchunt@cs.rochester.edu)   Modified for Mach threads by Bill Bumgarner <bbum@friday.com>   Condition functions added by Mircea Oancea <mircea@first.elcom.pub.ro>This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modify it under theterms of the GNU General Public License as published by the Free SoftwareFoundation; either version 2, or (at your option) any later version.GNU CC is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESSFOR A PARTICULAR PURPOSE.  See the GNU General Public License for moredetails.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA.  *//* As a special exception, if you link this library with files compiled with   GCC to produce an executable, this does not cause the resulting executable   to be covered by the GNU General Public License. This exception does not   however invalidate any other reasons why the executable file might be   covered by the GNU General Public License.  */#include <mach/mach.h>#include <mach/cthreads.h>#include <objc/thr.h>#include "runtime.h"/*  Obtain the maximum thread priority that can set for t.  Under the  mach threading model, it is possible for the developer to adjust the  maximum priority downward only-- cannot be raised without superuser  privileges.  Once lowered, it cannot be raised.  */static int __mach_get_max_thread_priority(cthread_t t, int *base){  thread_t threadP;  kern_return_t error;  struct thread_sched_info info;  unsigned int info_count=THREAD_SCHED_INFO_COUNT;      if (t == NULL)    return -1;  threadP  = cthread_thread(t); 	/* get thread underlying */  error=thread_info(threadP, THREAD_SCHED_INFO, 		    (thread_info_t)&info, &info_count);  if (error != KERN_SUCCESS)    return -1;  if (base != NULL)    *base = info.base_priority;  return info.max_priority;}	/* Backend initialization functions *//* Initialize the threads subsystem. */int__objc_init_thread_system(void){  return 0;}/* Close the threads subsystem. */int__objc_close_thread_system(void){  return 0;}/* Backend thread functions *//* Create a new thread of execution. */objc_thread_t__objc_thread_detach(void (*func)(void *arg), void *arg){  objc_thread_t thread_id;  cthread_t new_thread_handle;  /* create thread */  new_thread_handle = cthread_fork((cthread_fn_t)func, arg);  if(new_thread_handle)    {      /* this is not terribly portable */      thread_id = *(objc_thread_t *)&new_thread_handle;       cthread_detach(new_thread_handle);    }  else    thread_id = NULL;    return thread_id;}/* Set the current thread's priority. */int__objc_thread_set_priority(int priority){  objc_thread_t *t = objc_thread_id();  cthread_t cT = (cthread_t) t;   int maxPriority = __mach_get_max_thread_priority(cT, NULL);  int sys_priority = 0;  if (maxPriority == -1)    return -1;  switch (priority)    {    case OBJC_THREAD_INTERACTIVE_PRIORITY:      sys_priority = maxPriority;      break;    case OBJC_THREAD_BACKGROUND_PRIORITY:      sys_priority = (maxPriority * 2) / 3;      break;    case OBJC_THREAD_LOW_PRIORITY:      sys_priority = maxPriority / 3;      break;    default:      return -1;    }  if (sys_priority == 0)    return -1;  /* Change the priority */  if (cthread_priority(cT, sys_priority, 0) == KERN_SUCCESS)    return 0;  else    return -1;}/* Return the current thread's priority. */int__objc_thread_get_priority(void){  objc_thread_t *t = objc_thread_id();  cthread_t cT = (cthread_t) t; /* see objc_thread_id() */  int basePriority;  int maxPriority;  int sys_priority = 0;  int interactiveT, backgroundT, lowT; /* thresholds */  maxPriority = __mach_get_max_thread_priority(cT, &basePriority);  if(maxPriority == -1)    return -1;  if (basePriority > ( (maxPriority * 2) / 3))    return OBJC_THREAD_INTERACTIVE_PRIORITY;  if (basePriority > ( maxPriority / 3))    return OBJC_THREAD_BACKGROUND_PRIORITY;  return OBJC_THREAD_LOW_PRIORITY;}/* Yield our process time to another thread. */void__objc_thread_yield(void){  cthread_yield();}/* Terminate the current thread. */int__objc_thread_exit(void){  /* exit the thread */  cthread_exit(&__objc_thread_exit_status);  /* Failed if we reached here */  return -1;}/* Returns an integer value which uniquely describes a thread. */objc_thread_t__objc_thread_id(void){  cthread_t self = cthread_self();  return *(objc_thread_t *)&self;}/* Sets the thread's local storage pointer. */int__objc_thread_set_data(void *value){  cthread_set_data(cthread_self(), (any_t) value);  return 0;}/* Returns the thread's local storage pointer. */void *__objc_thread_get_data(void){  return (void *) cthread_data(cthread_self());}/* Backend mutex functions *//* Allocate a mutex. */int__objc_mutex_allocate(objc_mutex_t mutex){  int err = 0;  mutex->backend = objc_malloc(sizeof(struct mutex));  err = mutex_init((mutex_t)(mutex->backend));  if (err != 0)    {      objc_free(mutex->backend);      return -1;    }  else    return 0;}/* Deallocate a mutex. */int__objc_mutex_deallocate(objc_mutex_t mutex){  mutex_clear((mutex_t)(mutex->backend));  objc_free(mutex->backend);  mutex->backend = NULL;  return 0;}/* Grab a lock on a mutex. */int__objc_mutex_lock(objc_mutex_t mutex){  mutex_lock((mutex_t)(mutex->backend));  return 0;}/* Try to grab a lock on a mutex. */int__objc_mutex_trylock(objc_mutex_t mutex){  if (mutex_try_lock((mutex_t)(mutex->backend)) == 0)    return -1;  else    return 0;}/* Unlock the mutex */int__objc_mutex_unlock(objc_mutex_t mutex){  mutex_unlock((mutex_t)(mutex->backend));  return 0;}/* Backend condition mutex functions *//* Allocate a condition. */int__objc_condition_allocate(objc_condition_t condition){  condition->backend = objc_malloc(sizeof(struct condition));  condition_init((condition_t)(condition->backend));  return 0;}/* Deallocate a condition. */int__objc_condition_deallocate(objc_condition_t condition){  condition_clear((condition_t)(condition->backend));  objc_free(condition->backend);  condition->backend = NULL;  return 0;}/* Wait on the condition */int__objc_condition_wait(objc_condition_t condition, objc_mutex_t mutex){  condition_wait((condition_t)(condition->backend),		 (mutex_t)(mutex->backend));  return 0;}/* Wake up all threads waiting on this condition. */int__objc_condition_broadcast(objc_condition_t condition){  condition_broadcast((condition_t)(condition->backend));  return 0;}/* Wake up one thread waiting on this condition. */int__objc_condition_signal(objc_condition_t condition){  condition_signal((condition_t)(condition->backend));  return 0;}/* End of File */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久er热在这里只有精品66| 日本怡春院一区二区| 久久日一线二线三线suv| 欧美日韩精品一区视频| 欧洲国内综合视频| 欧美日韩一二三区| 91精品国产欧美一区二区成人| 欧美男女性生活在线直播观看| 欧美伊人久久久久久久久影院 | 色八戒一区二区三区| 99精品视频中文字幕| 91女人视频在线观看| 欧洲精品在线观看| 欧美日韩成人一区| 精品国产乱码久久久久久影片| 精品国产网站在线观看| 久久精品一二三| 亚洲手机成人高清视频| 亚洲制服丝袜av| 日韩高清不卡在线| 久久草av在线| 成人黄色大片在线观看| 欧美色爱综合网| 欧美mv日韩mv| 亚洲欧美一区二区三区久本道91| 美女视频黄频大全不卡视频在线播放| 一二三四社区欧美黄| 美女视频一区在线观看| 成人免费毛片aaaaa**| 欧美午夜精品电影| 久久久亚洲高清| 亚洲另类在线制服丝袜| 日韩高清国产一区在线| 丁香一区二区三区| 欧美另类变人与禽xxxxx| 日本一区二区三级电影在线观看| 亚洲精品网站在线观看| 激情成人综合网| 在线中文字幕一区| 久久久精品2019中文字幕之3| 一区二区三区毛片| 国产高清久久久| 欧美日韩极品在线观看一区| 欧美激情一区二区三区不卡| 日韩av一级片| 色女孩综合影院| 久久久久久久电影| 亚洲国产日韩在线一区模特| 成人午夜精品一区二区三区| 自拍偷自拍亚洲精品播放| 日本不卡一二三区黄网| 色婷婷综合久久久中文字幕| 久久这里只精品最新地址| 亚洲国产成人av网| 色综合天天综合网天天看片| 久久久久久黄色| 奇米精品一区二区三区在线观看一| 91美女福利视频| 国产欧美精品一区二区色综合 | 国产精品乡下勾搭老头1| 欧美午夜电影在线播放| 亚洲欧美区自拍先锋| 成人性生交大合| 国产日韩欧美一区二区三区乱码| 日韩极品在线观看| 欧美日韩mp4| 香蕉影视欧美成人| 欧美少妇bbb| 一区二区三区在线播| 成人免费视频视频在线观看免费| 亚洲精品在线观看网站| 极品尤物av久久免费看| 精品日韩99亚洲| 热久久免费视频| 亚洲欧美日韩国产一区二区三区| 极品少妇一区二区| 久久综合色婷婷| 国产一区欧美二区| 久久久综合网站| 国产成人啪午夜精品网站男同| 国产日韩欧美麻豆| 99精品久久99久久久久| 亚洲精品精品亚洲| 欧美性生交片4| 亚洲午夜在线观看视频在线| 欧美日韩日本视频| 精品一区中文字幕| 26uuu精品一区二区三区四区在线| 精品一区二区免费在线观看| 久久久蜜桃精品| 不卡视频一二三| 亚洲激情网站免费观看| 精品视频免费看| 久久国产视频网| 久久精品视频免费| 91免费版pro下载短视频| 亚洲观看高清完整版在线观看| 91精品国产色综合久久ai换脸| 国内精品免费在线观看| 国产精品美日韩| 欧美年轻男男videosbes| 国产中文一区二区三区| 日本aⅴ亚洲精品中文乱码| 精品噜噜噜噜久久久久久久久试看| 国产精品资源网站| 亚洲精品视频在线观看免费| 日韩久久久久久| 99热这里都是精品| 三级不卡在线观看| 国产精品女主播av| 欧美一区二区视频网站| 豆国产96在线|亚洲| 亚洲国产视频一区| 久久美女艺术照精彩视频福利播放| 91色porny蝌蚪| 久久电影国产免费久久电影| 亚洲欧美另类在线| 久久久久久97三级| 56国语精品自产拍在线观看| 国产99久久久久久免费看农村| 一区二区三区在线观看欧美| 国产日韩欧美一区二区三区乱码 | 日韩欧美一二三区| 99国产一区二区三精品乱码| 日韩成人一级大片| 亚洲欧洲精品一区二区三区不卡| 日韩小视频在线观看专区| 色综合亚洲欧洲| 成人免费高清在线| 捆绑调教美女网站视频一区| 亚洲国产中文字幕在线视频综合| 国产日韩欧美麻豆| 亚洲日穴在线视频| 久久毛片高清国产| 日韩免费成人网| 欧美电影影音先锋| 欧美亚洲国产bt| 99久久精品免费看国产免费软件| 国产精品亚洲综合一区在线观看| 日韩成人伦理电影在线观看| 一区二区三区中文在线观看| 中文字幕一区二区三区在线播放| xnxx国产精品| 精品第一国产综合精品aⅴ| 777欧美精品| 欧美一级久久久| 日韩欧美国产精品| 日韩三级中文字幕| 日韩无一区二区| 91精品国产综合久久久久久漫画| 欧美视频在线观看一区二区| 日本久久一区二区三区| 一本一本大道香蕉久在线精品 | 国产精品久久久久三级| 久久综合九色综合97婷婷女人 | 亚洲成人第一页| 亚洲一区二区三区视频在线播放| 亚洲激情自拍偷拍| 亚洲午夜精品网| 日本中文字幕一区二区视频| 久久精品国产精品亚洲精品| 日韩av一区二区在线影视| 日韩精品成人一区二区三区| 裸体健美xxxx欧美裸体表演| 韩国欧美一区二区| 成人午夜视频在线| 色88888久久久久久影院按摩 | 日韩精品一区二区三区视频在线观看 | 欧美三级中文字| 欧美日韩亚洲综合在线| 欧美一区二区啪啪| 欧美不卡一区二区三区| 国产日韩欧美亚洲| 亚洲一区二区三区中文字幕| 免费在线欧美视频| 国产麻豆一精品一av一免费| 成人app网站| 欧美丰满一区二区免费视频| 久久男人中文字幕资源站| 日韩美女久久久| 午夜精品视频在线观看| 久久www免费人成看片高清| 波多野结衣91| 337p亚洲精品色噜噜噜| 国产蜜臀97一区二区三区 | 欧美国产乱子伦| 一区二区在线看| 狠狠色狠狠色综合系列| 一本到高清视频免费精品| 欧美大片一区二区| 亚洲人快播电影网| 国产在线精品一区在线观看麻豆| 色综合天天综合狠狠| 日韩欧美一二区| 亚洲欧美日韩国产一区二区三区| 激情图片小说一区| 色欧美片视频在线观看在线视频| 精品美女一区二区| 视频在线观看91| 色婷婷精品大视频在线蜜桃视频|