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

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

?? sigreturn.c

?? glibc 庫, 不僅可以學習使用庫函數,還可以學習函數的具體實現,是提高功力的好資料
?? C
字號:
/* Return from signal handler in GNU C library for Hurd.  Alpha version.   Copyright (C) 1994,95,97,98,2002 Free Software Foundation, Inc.   This file is part of the GNU C Library.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public   License as published by the Free Software Foundation; either   version 2.1 of the License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA.  */#include <hurd.h>#include <hurd/signal.h>#include <hurd/threadvar.h>#include <hurd/msg.h>#include <stdlib.h>#include <string.h>int__sigreturn (struct sigcontext *scp){  struct hurd_sigstate *ss;  mach_port_t *reply_port;  if (scp == NULL || (scp->sc_mask & _SIG_CANT_MASK))    {      errno = EINVAL;      return -1;    }  ss = _hurd_self_sigstate ();  __spin_lock (&ss->lock);  /* Restore the set of blocked signals, and the intr_port slot.  */  ss->blocked = scp->sc_mask;  ss->intr_port = scp->sc_intr_port;  /* Check for pending signals that were blocked by the old set.  */  if (ss->pending & ~ss->blocked)    {      /* There are pending signals that just became unblocked.  Wake up the	 signal thread to deliver them.  But first, squirrel away SCP where	 the signal thread will notice it if it runs another handler, and	 arrange to have us called over again in the new reality.  */      ss->context = scp;      /* Clear the intr_port slot, since we are not in fact doing	 an interruptible RPC right now.  If SS->intr_port is not null,	 the SCP context is doing an interruptible RPC, but the signal	 thread will examine us while we are blocked in the sig_post RPC.  */      ss->intr_port = MACH_PORT_NULL;      __spin_unlock (&ss->lock);      __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ());      /* If a pending signal was handled, sig_post never returned.  */      __spin_lock (&ss->lock);    }  if (scp->sc_onstack)    {      ss->sigaltstack.ss_flags &= ~SS_ONSTACK; /* XXX threadvars */      /* XXX cannot unlock until off sigstack */      abort ();    }  else    __spin_unlock (&ss->lock);  /* Destroy the MiG reply port used by the signal handler, and restore the     reply port in use by the thread when interrupted.  */  reply_port =    (mach_port_t *) __hurd_threadvar_location (_HURD_THREADVAR_MIG_REPLY);  if (*reply_port)    __mach_port_destroy (__mach_task_self (), *reply_port);  *reply_port = scp->sc_reply_port;  if (scp->sc_used_fpa)    {      /* Restore FPU state.  */      /* Restore the floating-point control/status register.	 We must do this first because the compiler will need	 a temporary FP register for the load.  */      asm volatile ("mt_fpcr %0" : : "f" (scp->sc_fpcsr));      /* Restore floating-point registers. */#define restore_fpr(n) \  asm volatile ("ldt $f" #n ",%0" : : "m" (scp->sc_fpregs[n]))      restore_fpr (0);      restore_fpr (1);      restore_fpr (2);      restore_fpr (3);      restore_fpr (4);      restore_fpr (5);      restore_fpr (6);      restore_fpr (7);      restore_fpr (8);      restore_fpr (9);      restore_fpr (10);      restore_fpr (11);      restore_fpr (12);      restore_fpr (13);      restore_fpr (14);      restore_fpr (15);      restore_fpr (16);      restore_fpr (17);      restore_fpr (18);      restore_fpr (19);      restore_fpr (20);      restore_fpr (21);      restore_fpr (22);      restore_fpr (23);      restore_fpr (24);      restore_fpr (25);      restore_fpr (26);      restore_fpr (27);      restore_fpr (28);      restore_fpr (29);      restore_fpr (30);    }  /* Load all the registers from the sigcontext.  */#define restore_gpr(n) \  asm volatile ("ldq $" #n ",%0" : : "m" (scpreg->sc_regs[n]))  {    /* The `rei' PAL pseudo-instruction restores registers $2..$7, the PC       and processor status.  So we can use these few registers for our       working variables.  Unfortunately, it finds its data on the stack       and merely pops the SP ($30) over the words of state restored,       allowing no other option for the new SP value.  So we must push the       registers and PSW it will to restore, onto the user's stack and let       it pop them from there.  */    register const struct sigcontext *const scpreg asm ("$2") = scp;    register integer_t *usp asm ("$3") = (integer_t *) scpreg->sc_regs[30];    register integer_t usp_align asm ("$4");    /* Push an 8-word "trap frame" onto the user stack for `rei':       registers $2..$7, the PC, and the PSW.  */    register struct rei_frame      {	integer_t regs[5], pc, ps;      } *rei_frame asm ("$5");    usp -= 8;    /* `rei' demands that the stack be aligned to a 64 byte (8 word)       boundary; bits 61..56 of the PSW are OR'd back into the SP value       after popping the 8-word trap frame, so we store (sp % 64)       there and this restores the original user SP.  */    usp_align = (integer_t) usp & 63L;    rei_frame = (void *) ((integer_t) usp & ~63L);    /* Copy the registers and PC from the sigcontext.  */    memcpy (rei_frame->regs, &scpreg->sc_regs[2], sizeof rei_frame->regs);    rei_frame->pc = scpreg->sc_pc;    /* Compute the new PS value to be restored.  `rei' adds the value at       bits 61..56 to the SP to compensate for the alignment above that       cleared the low 6 bits; bits 5..3 are the new mode/privilege level       (must be >= current mode; 3 == user mode); bits 2..0 are "software",       unused by the processor or kernel (XXX should trampoline save these?       How?); in user mode, `rei' demands that all other bits be zero.  */    rei_frame->ps = (usp_align << 56) | (3 << 3); /* XXX low 3 bits??? */    /* Restore the other general registers: everything except $2..$7, which       are in the `rei' trap frame we set up above, and $30, which is the       SP which is popped by `rei'.  */    restore_gpr (1);    restore_gpr (8);    restore_gpr (9);    restore_gpr (10);    restore_gpr (11);    restore_gpr (12);    restore_gpr (13);    restore_gpr (14);    restore_gpr (15);    restore_gpr (16);    restore_gpr (17);    restore_gpr (18);    restore_gpr (19);    restore_gpr (20);    restore_gpr (21);    restore_gpr (22);    restore_gpr (23);    restore_gpr (24);    restore_gpr (25);    restore_gpr (26);    restore_gpr (27);    restore_gpr (28);    restore_gpr (29);    /* Switch the stack pointer to the trap frame set up on       the user stack and do the magical `rei' PAL call.  */    asm volatile ("mov %0, $30\n"		  "call_pal %1"		  : : "r" (rei_frame), "i" (63)); /* PAL_rti */    /* Firewall.  */    asm volatile ("halt");  }  /* NOTREACHED */  return -1;}weak_alias (__sigreturn, sigreturn)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色小视频| 欧美精品第一页| 欧美日韩国产一二三| 2020日本不卡一区二区视频| 欧美激情在线看| 久久精品国内一区二区三区| 色嗨嗨av一区二区三区| 国产日韩三级在线| 奇米影视一区二区三区小说| 粉嫩嫩av羞羞动漫久久久 | 高清在线成人网| 日韩一区二区在线看| 亚洲日本免费电影| 国产一区二区视频在线| 欧美日韩一级二级| 一区二区在线观看av| 国产黄色成人av| 国产亚洲女人久久久久毛片| 日本不卡免费在线视频| 欧美人妖巨大在线| 亚洲制服丝袜av| 欧美三级日韩在线| 亚洲综合一二区| 欧美日韩中文一区| 一区二区成人在线视频 | 一区二区三区四区视频精品免费| 国产在线播精品第三| 精品1区2区在线观看| 美女国产一区二区| 欧美tickling网站挠脚心| 人人超碰91尤物精品国产| 在线成人av影院| 美女被吸乳得到大胸91| 8v天堂国产在线一区二区| 久久久久青草大香线综合精品| 久久疯狂做爰流白浆xx| 精品国产乱码久久久久久闺蜜| 秋霞午夜鲁丝一区二区老狼| 欧美一区二区视频在线观看2022| 亚洲最快最全在线视频| 欧美美女网站色| 日韩在线一二三区| 欧美va在线播放| 国产麻豆日韩欧美久久| 国产精品麻豆一区二区| 92国产精品观看| 亚洲成a人片在线不卡一二三区| 欧美日韩国产美女| 久久99精品一区二区三区三区| 欧美va日韩va| caoporen国产精品视频| 亚洲美腿欧美偷拍| 56国语精品自产拍在线观看| 老司机精品视频线观看86| 久久免费精品国产久精品久久久久| 国产精品亚洲午夜一区二区三区| 日本一二三不卡| 91极品视觉盛宴| 免费成人在线观看| 国产精品传媒视频| 欧美视频在线播放| 国产一区二区主播在线| 久久久久国产精品免费免费搜索| k8久久久一区二区三区 | 国产精品毛片a∨一区二区三区| 91美女片黄在线| 麻豆精品在线观看| 日韩久久一区二区| 日韩欧美国产综合| 99久久精品国产网站| 奇米777欧美一区二区| 国产精品乱码一区二区三区软件| 在线观看日韩一区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美浪妇xxxx高跟鞋交| 成人性视频网站| 美女视频黄久久| 亚洲黄色录像片| 26uuu欧美| 国产不卡视频在线观看| 日韩中文字幕区一区有砖一区 | 欧美—级在线免费片| 88在线观看91蜜桃国自产| 国产不卡在线视频| 日日噜噜夜夜狠狠视频欧美人 | 精品久久国产97色综合| 91蜜桃在线免费视频| 国产成都精品91一区二区三| 五月激情丁香一区二区三区| ...中文天堂在线一区| 精品国产乱码久久久久久1区2区| 在线观看91精品国产入口| 大桥未久av一区二区三区中文| 亚洲第一福利一区| 亚洲欧美综合网| 久久精品网站免费观看| 精品少妇一区二区三区在线视频 | 欧美高清视频在线高清观看mv色露露十八| 国产激情偷乱视频一区二区三区| 亚洲成av人片在线观看无码| 国产精品护士白丝一区av| 久久天天做天天爱综合色| 欧美一级精品在线| 91精品国产一区二区三区蜜臀| 在线一区二区三区四区五区| 成人免费精品视频| 懂色av噜噜一区二区三区av| 人人超碰91尤物精品国产| 亚洲一级片在线观看| 亚洲精品国产品国语在线app| 国产精品污污网站在线观看| 亚洲国产成人午夜在线一区| 国产日产欧美一区| 日本一区二区在线不卡| 国产精品午夜在线观看| 中文字幕不卡的av| 国产精品白丝在线| 亚洲精品综合在线| 亚洲国产精品一区二区久久| 亚洲国产中文字幕在线视频综合| 一区二区三区四区视频精品免费| 亚洲综合无码一区二区| 亚洲国产另类精品专区| 午夜在线成人av| 久草在线在线精品观看| 国产在线视视频有精品| 丁香桃色午夜亚洲一区二区三区| 国产成人av一区二区三区在线观看| 国产91露脸合集magnet| k8久久久一区二区三区| 欧美日韩在线直播| 欧美一级久久久久久久大片| 久久免费精品国产久精品久久久久| 欧美国产视频在线| 亚洲一级二级在线| 韩国一区二区在线观看| 99久久国产综合色|国产精品| 色欲综合视频天天天| 正在播放亚洲一区| 久久久无码精品亚洲日韩按摩| 国产精品网站一区| 亚洲综合激情另类小说区| 免费成人在线视频观看| www.亚洲激情.com| 欧美日韩中文字幕一区| 久久久亚洲精品石原莉奈| 亚洲欧美电影一区二区| 蜜臀久久99精品久久久画质超高清| 国产最新精品免费| 91成人在线精品| 久久一区二区三区四区| 亚洲综合一二区| 国产黄色成人av| 欧美手机在线视频| 国产日韩欧美综合一区| 亚洲福中文字幕伊人影院| 国产精品影视天天线| 欧美色视频一区| 国产欧美视频一区二区三区| 亚洲第四色夜色| 91免费在线播放| 精品少妇一区二区三区在线视频| 亚洲免费观看高清完整版在线观看熊| 美女一区二区视频| 欧美亚洲一区二区在线| 国产精品另类一区| 国内成人自拍视频| 91精品国产欧美一区二区成人 | 国产精品嫩草99a| 美女一区二区三区| 色婷婷久久综合| 国产欧美日韩卡一| 久久国产三级精品| 欧美精品xxxxbbbb| 亚洲综合区在线| 91理论电影在线观看| 日本一区二区三区在线不卡| 热久久一区二区| 欧美日韩精品电影| 亚洲中国最大av网站| 91丝袜国产在线播放| 国产精品亲子伦对白| 精品一区二区三区香蕉蜜桃| 欧美三级乱人伦电影| 一级女性全黄久久生活片免费| 国产91清纯白嫩初高中在线观看| 精品国产一区二区三区忘忧草| 日韩精品一级二级| 欧美妇女性影城| 日韩国产成人精品| 欧美精品在线观看播放| 天天综合色天天综合| 欧美三级日韩三级| 国产精品国产三级国产专播品爱网| 狠狠网亚洲精品| 精品国产乱码久久久久久牛牛| 精品一区二区在线播放| 精品国产一区二区亚洲人成毛片 | 欧美制服丝袜第一页| 亚洲精品成a人|