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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? thr-mach.c

?? gcc的組件
?? C
字號:
/* GNU Objective C Runtime Thread Implementation   Copyright (C) 1996, 1997, 2002 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 GCC.GCC 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.GCC 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 GCC; see the file COPYING.  If not, write tothe Free Software Foundation, 51 Franklin Street, Fifth Floor,Boston, MA 02110-1301, 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 "objc/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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本一区二区| 亚洲二区在线观看| 日本一区二区不卡视频| 亚洲一区二区在线免费看| 秋霞国产午夜精品免费视频| 国产成人福利片| 日韩午夜激情av| 综合久久久久久久| av在线不卡电影| 3d动漫精品啪啪1区2区免费 | 亚洲午夜在线电影| 国产麻豆精品视频| 欧美日韩国产综合一区二区| 国产精品激情偷乱一区二区∴| 日本不卡一区二区三区| 国产999精品久久久久久绿帽| 欧美一级高清片| 亚洲自拍偷拍九九九| 91天堂素人约啪| 国产亚洲女人久久久久毛片| 免费观看成人av| 欧美一区二区三区啪啪| 午夜免费久久看| 色久综合一二码| 亚洲天堂精品视频| 91无套直看片红桃| 成人欧美一区二区三区1314| 国产高清精品在线| 精品国产91乱码一区二区三区| 亚洲成av人片在线| 欧美日韩精品系列| 一区二区日韩电影| 欧美亚洲图片小说| 一区二区三区在线观看欧美| 91香蕉视频mp4| 亚洲一二三四在线观看| 精品三级在线观看| 色综合激情五月| 亚洲欧美日韩精品久久久久| 国产真实乱对白精彩久久| 日韩一区二区影院| 麻豆成人免费电影| 日韩欧美一级精品久久| 男女男精品视频| wwwwww.欧美系列| 国产综合色视频| 日本一区二区综合亚洲| 大尺度一区二区| 亚洲欧美视频在线观看视频| 色域天天综合网| 日韩中文字幕亚洲一区二区va在线| 欧美群妇大交群中文字幕| 日韩激情中文字幕| 久久综合99re88久久爱| 国产精品99久久久久久似苏梦涵| 日本一区二区久久| 欧美欧美午夜aⅴ在线观看| 首页国产丝袜综合| 久久久亚洲高清| 99国产精品久久久久久久久久久| 亚洲欧美日韩国产另类专区| 欧美视频完全免费看| 蜜乳av一区二区三区| 国产拍欧美日韩视频二区| 99精品黄色片免费大全| 午夜不卡av在线| 久久精品网站免费观看| 色国产精品一区在线观看| 免费在线观看成人| 中文字幕 久热精品 视频在线| 欧美午夜电影在线播放| 麻豆国产精品官网| 中文字幕日韩一区二区| 这里只有精品99re| 丁香一区二区三区| 五月激情丁香一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 成人国产精品视频| 天天综合天天综合色| 国产丝袜美腿一区二区三区| 欧美又粗又大又爽| 国产精品一区二区黑丝| 一区二区成人在线观看| 久久日韩精品一区二区五区| 欧美亚洲综合久久| 成人在线综合网| 蜜臀av性久久久久蜜臀aⅴ| 国产精品视频一二三区| 91麻豆精品国产91久久久久| 91女神在线视频| 国产精品影视在线| 日韩专区欧美专区| 亚洲一区二区美女| 国产精品天干天干在线综合| 欧美日韩一区 二区 三区 久久精品| 7777精品伊人久久久大香线蕉经典版下载| 欧美精品电影在线播放| 麻豆精品视频在线观看视频| 亚洲激情综合网| 国产精品网曝门| 久久亚洲综合色一区二区三区| 欧美日韩一区二区三区四区| 99久免费精品视频在线观看 | 国产欧美一区二区精品性色| 欧美区在线观看| 在线视频综合导航| 一本色道久久综合亚洲aⅴ蜜桃 | 最新欧美精品一区二区三区| 亚洲成a人在线观看| 亚洲卡通欧美制服中文| 久久久www成人免费毛片麻豆| 91精品国产一区二区三区香蕉| 色久优优欧美色久优优| 日本精品裸体写真集在线观看| 99精品视频在线观看| 国产成人在线看| 国产老女人精品毛片久久| 狠狠色综合播放一区二区| 久久99最新地址| 国内成人精品2018免费看| 韩国一区二区在线观看| 国内精品伊人久久久久影院对白| 久久国产精品99久久久久久老狼 | 欧美va亚洲va香蕉在线| 日韩欧美一卡二卡| 久久综合九色综合97婷婷| 久久精品亚洲精品国产欧美| 国产精品久久久久国产精品日日| 国产精品污www在线观看| 国产精品美女久久福利网站| 综合久久一区二区三区| 亚洲一二三专区| 美女视频网站黄色亚洲| 国产一区二区网址| 国产福利一区二区三区视频| 国产91精品欧美| 99久久精品一区二区| 欧美色倩网站大全免费| 日韩欧美一区中文| 久久久久久日产精品| 国产精品人成在线观看免费| 亚洲美女在线国产| 日韩经典中文字幕一区| 国产麻豆成人精品| 日本韩国精品在线| 欧美一区二区免费| 国产精品天美传媒沈樵| 日韩毛片在线免费观看| 丝袜诱惑制服诱惑色一区在线观看| 日产国产欧美视频一区精品| 韩国成人福利片在线播放| 成人蜜臀av电影| 欧美丝袜自拍制服另类| 欧美变态tickling挠脚心| 亚洲国产精品av| 性做久久久久久免费观看欧美| 国产在线看一区| 一本久久综合亚洲鲁鲁五月天| 欧美精品视频www在线观看| 91久久免费观看| 久久久精品免费免费| 欧美不卡123| 久久久一区二区| 一区二区三区成人在线视频| 美女被吸乳得到大胸91| 91丝袜美腿高跟国产极品老师 | 中文字幕 久热精品 视频在线| 国产欧美精品一区二区色综合朱莉| 国产精品一区一区| av网站免费线看精品| 亚洲综合av网| 99精品黄色片免费大全| 日韩欧美高清一区| 精品一二三四区| 成人动漫一区二区| 欧美精品丝袜中出| 一区二区三区在线观看视频| 欧美aa在线视频| 亚洲综合偷拍欧美一区色| 韩国精品主播一区二区在线观看 | 亚洲国产视频一区| 国产精品1024| 精品国产99国产精品| 午夜欧美在线一二页| 99国内精品久久| 国产午夜精品久久| 麻豆国产精品一区二区三区| 欧美三级在线视频| 欧美一二区视频| av亚洲精华国产精华| 丝袜美腿一区二区三区| 欧美久久久一区| 亚洲在线成人精品| 日韩一二在线观看| 美日韩一区二区三区| 国产欧美一二三区| 欧美日韩成人一区| 国产伦理精品不卡| 国内精品写真在线观看| 亚洲欧洲精品天堂一级|