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

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

?? linux-xen-low.c

?? xen 3.2.2 源碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
	  else	    {#ifdef DEBUG	      perror ("Warning: ptrace(regsets_store_inferior_registers)");#endif	    }	}      regset ++;      free (buf);    }  return 0;}voidlinux_fetch_registers (int regno){  if (use_regsets_p)    {      if (regsets_fetch_inferior_registers () == 0)	return;    }}voidlinux_store_registers (int regno){  if (use_regsets_p)    {      if (regsets_store_inferior_registers () == 0)	return;    }}/* Copy LEN bytes from inferior's memory starting at MEMADDR   to debugger memory starting at MYADDR.  */static intlinux_read_memory (CORE_ADDR memaddr, char *myaddr, int len){  register int i;  /* Round starting address down to longword boundary.  */  register CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);  /* Round ending address up; get number of longwords that makes.  */  register int count    = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1)      / sizeof (PTRACE_XFER_TYPE);  /* Allocate buffer of that many longwords.  */  register PTRACE_XFER_TYPE *buffer    = (PTRACE_XFER_TYPE *) alloca (count * sizeof (PTRACE_XFER_TYPE));  TRACE_ENTER;  /* Read all the longwords */  for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))    {      errno = 0;      buffer[i] = xc_ptrace (xc_handle, PTRACE_PEEKTEXT, curvcpuid(), (PTRACE_ARG3_TYPE) addr, 0);      if (errno)	return errno;    }  /* Copy appropriate bytes out of the buffer.  */  memcpy (myaddr, (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)), len);  return 0;}/* Copy LEN bytes of data from debugger memory at MYADDR   to inferior's memory at MEMADDR.   On failure (cannot write the inferior)   returns the value of errno.  */static intlinux_write_memory (CORE_ADDR memaddr, const char *myaddr, int len){  register int i;  /* Round starting address down to longword boundary.  */  register CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);  /* Round ending address up; get number of longwords that makes.  */  register int count  = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1) / sizeof (PTRACE_XFER_TYPE);  /* Allocate buffer of that many longwords.  */  register PTRACE_XFER_TYPE *buffer = (PTRACE_XFER_TYPE *) alloca (count * sizeof (PTRACE_XFER_TYPE));  extern int errno;  TRACE_ENTER;  /* Fill start and end extra bytes of buffer with existing memory data.  */  buffer[0] = xc_ptrace (xc_handle, PTRACE_PEEKTEXT, curvcpuid(),		      (PTRACE_ARG3_TYPE) addr, 0);  if (count > 1)    {      buffer[count - 1]	= xc_ptrace (xc_handle, PTRACE_PEEKTEXT, curvcpuid(),		  (PTRACE_ARG3_TYPE) (addr + (count - 1)				      * sizeof (PTRACE_XFER_TYPE)),		  0);    }  /* Copy data to be written over corresponding part of buffer */  memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)), myaddr, len);  /* Write the entire buffer.  */  for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))    {      errno = 0;      xc_ptrace (xc_handle, PTRACE_POKETEXT, curvcpuid(), 		(PTRACE_ARG3_TYPE) addr, buffer[i]);      if (errno)	return errno;    }  return 0;}static voidlinux_look_up_symbols (void){  if (using_threads)     return;  using_threads = thread_db_init ();}static voidlinux_send_signal (int signum){  extern int signal_pid;  TRACE_ENTER;  signal_to_send = signum;  psignal(signum, "need to send ");  if (cont_thread > 0)    {      struct process_info *process;      process = get_thread_process (current_inferior);      kill (process->lwpid, signum);    }  else    kill (signal_pid, signum);}/* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET   to debugger memory starting at MYADDR.  */static intlinux_read_auxv (CORE_ADDR offset, char *myaddr, unsigned int len){  char filename[PATH_MAX];  int fd, n;  TRACE_ENTER;  snprintf (filename, sizeof filename, "/proc/%d/auxv", inferior_pid);  fd = open (filename, O_RDONLY);  if (fd < 0)    return -1;  if (offset != (CORE_ADDR) 0      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)    n = -1;  else    n = read (fd, myaddr, len);  close (fd);  return n;}static struct target_ops linux_xen_target_ops = {  linux_create_inferior,  linux_attach,  linux_kill,  linux_detach,  linux_thread_alive,  linux_resume,  linux_wait,  linux_fetch_registers,  linux_store_registers,  linux_read_memory,  linux_write_memory,  linux_look_up_symbols,  linux_send_signal,  linux_read_auxv,};static voidlinux_init_signals (){  /* FIXME drow/2002-06-09: As above, we should check with LinuxThreads     to find what the cancel signal actually is.  */  signal (__SIGRTMIN+1, SIG_IGN);}voidinitialize_low (void){  using_threads = 0;  xc_handle = xc_interface_open();  set_target_ops (&linux_xen_target_ops);  set_breakpoint_data (the_low_target.breakpoint,		       the_low_target.breakpoint_len);  init_registers ();  linux_init_signals ();  using_threads = thread_db_init ();}static voidthread_create_callback(long vcpuid){  struct thread_info *inferior;  struct process_info *process;  /*  If we are attaching to our first thread, things are a little   *  different.     */  if (all_threads.head == all_threads.tail)    {      inferior = (struct thread_info *) all_threads.head;      process = get_thread_process (inferior);      if (process->thread_known == 0)	{	  /* Switch to indexing the threads list by TID.  */	  change_inferior_id (&all_threads, vcpuid);	  goto found;	}    }  if (debug_threads)    fprintf (stderr, "looking up thread %ld\n",	     vcpuid);  inferior = (struct thread_info *) find_inferior_id (&all_threads,						      vcpuid);  /* if vcpu alread registered - do nothing */  if (inferior != NULL)     return;  if (debug_threads)    fprintf (stderr, "Attaching to thread %ld\n",	     vcpuid);  process = add_process(current_domid, vcpuid);  add_thread(vcpuid, process);  inferior = (struct thread_info *) find_inferior_id (&all_threads,						      vcpuid);  if (inferior == NULL)    {      warning ("Could not attach to thread %ld\n",	       vcpuid);      return;    }found:  if (debug_threads)    fprintf (stderr, "notifying of new thread %ld\n",	     vcpuid);  new_thread_notify (vcpuid);  process->tid = vcpuid;  process->lwpid = vcpuid;  process->thread_known = 1;}static voidthread_death_callback(long vcpuid){    if (debug_threads)      fprintf (stderr, "Buuurp...! CPU down event.\n");}intthread_db_init(void){  debug_threads = 0;  xc_register_event_handler(thread_create_callback, TD_CREATE);  xc_register_event_handler(thread_death_callback, TD_DEATH);  return 1;}/* XXX GAG ME */static int breakpoint_found;static voidset_breakpoint_inferior (struct inferior_list_entry *entry){  struct thread_info *thread = (struct thread_info *) entry;  struct thread_info *saved_inferior = current_inferior;  CORE_ADDR eip;  unsigned char buf[2] = {0, 0};  current_inferior = thread;  if (!breakpoint_found) {    eip = get_stop_pc();    linux_read_memory(eip, buf, 1);    if (buf[0] == 0xcc) {      breakpoint_found = 1;      return;    }  } else if (breakpoint_found == 2) {    if (get_thread_process (current_inferior)->stepping) {      printf("stepping\n");      breakpoint_found = 1;      return;    }   }  current_inferior = saved_inferior;}static voidlinux_set_inferior (void){  breakpoint_found = 0;  for_each_inferior (&all_threads, set_breakpoint_inferior);  if (!breakpoint_found) {    breakpoint_found = 2;    for_each_inferior (&all_threads, set_breakpoint_inferior);  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产普通话蜜臀 | 美女视频一区在线观看| 亚洲乱码日产精品bd| 中文字幕中文字幕中文字幕亚洲无线| 精品成人一区二区三区四区| 日韩一级免费观看| 日韩一二在线观看| 精品国产凹凸成av人导航| 久久夜色精品一区| 国产日产欧产精品推荐色| 中文字幕不卡一区| 亚洲一线二线三线久久久| 亚洲一二三四久久| 免费成人av在线| 国产盗摄视频一区二区三区| 成人网页在线观看| 色天天综合久久久久综合片| 欧美性受xxxx黑人xyx性爽| 69堂成人精品免费视频| 精品国产麻豆免费人成网站| 国产精品无遮挡| 亚洲免费观看高清完整版在线观看| 国产精品不卡一区| 日本在线不卡一区| 高清不卡在线观看| 欧美日韩另类一区| 久久嫩草精品久久久精品 | 国产白丝精品91爽爽久久| 成人黄色国产精品网站大全在线免费观看 | 亚瑟在线精品视频| 日本成人在线视频网站| 精品一区二区三区av| 国产91精品精华液一区二区三区| 国产一区二区主播在线| 色噜噜夜夜夜综合网| 欧美大胆人体bbbb| 亚洲精品乱码久久久久久黑人| 日本不卡视频一二三区| 成人不卡免费av| 在线综合视频播放| 亚洲免费视频中文字幕| 精品一区精品二区高清| 91国偷自产一区二区开放时间| 精品电影一区二区| 亚洲在线观看免费| 国产91精品久久久久久久网曝门| 欧美日韩成人综合天天影院| 国产欧美中文在线| 日韩av中文字幕一区二区三区| 成人97人人超碰人人99| 欧美电视剧免费观看| 亚洲伦在线观看| 高清shemale亚洲人妖| 日韩一区二区三| 午夜激情综合网| 在线精品视频一区二区| 中文字幕 久热精品 视频在线 | 成人一区二区三区中文字幕| 欧美绝品在线观看成人午夜影视| 中文字幕亚洲一区二区av在线| 黄页网站大全一区二区| 91麻豆精品国产91久久久久久| 亚洲婷婷综合久久一本伊一区| 韩国av一区二区三区在线观看| 337p亚洲精品色噜噜| 亚洲一区二区三区爽爽爽爽爽| eeuss鲁片一区二区三区在线看| 国产欧美一区二区在线| 国产剧情av麻豆香蕉精品| 欧美成人欧美edvon| 免费在线观看日韩欧美| 在线不卡欧美精品一区二区三区| 亚洲综合色视频| 欧美亚洲精品一区| 天堂午夜影视日韩欧美一区二区| 91福利小视频| 亚洲不卡av一区二区三区| 欧美系列在线观看| 亚洲一二三四区不卡| 欧美日本一区二区三区四区| 亚洲3atv精品一区二区三区| 欧美一区二区三区在线观看视频 | 国产成人精品亚洲777人妖| 久久久久9999亚洲精品| 国产精品夜夜爽| 国产精品久久久一区麻豆最新章节| 国产成人免费高清| 综合激情网...| 欧美日韩aaaaaa| 精品一区二区在线视频| 国产日产欧美一区二区三区| 99免费精品在线观看| 亚洲精品视频在线观看免费| 欧美日韩在线播放三区| 久久国产精品99久久人人澡| 久久综合99re88久久爱| 成人av集中营| 一区二区三区欧美| 欧美xxxxxxxx| 国产成人av在线影院| 一区二区三区在线观看欧美 | 久久亚洲一区二区三区四区| 国产精品88888| 一区二区免费在线播放| 日韩一区二区三区四区 | 欧美aaaaaa午夜精品| 国产片一区二区三区| 欧美中文字幕一二三区视频| 老司机免费视频一区二区三区| 国产精品人人做人人爽人人添| 在线观看日韩精品| 国产剧情一区二区| 五月天亚洲精品| 国产精品第一页第二页第三页| 欧美日韩国产综合草草| 国产传媒日韩欧美成人| 亚洲r级在线视频| 国产精品家庭影院| 精品国产伦理网| 欧美午夜宅男影院| 不卡欧美aaaaa| 韩国精品主播一区二区在线观看| 一区二区免费看| 国产精品嫩草影院av蜜臀| 在线不卡一区二区| 91成人免费电影| av不卡免费在线观看| 久草热8精品视频在线观看| 一区二区三区不卡视频在线观看| 精品乱人伦一区二区三区| 精品视频1区2区3区| av激情综合网| 国产一区二区免费在线| 日本成人在线电影网| 国产精品久久久久久久裸模| 欧美变态tickle挠乳网站| 成人黄色网址在线观看| 国产ts人妖一区二区| 极品少妇一区二区三区精品视频| 亚洲视频1区2区| 中文字幕制服丝袜成人av| 一区二区三区丝袜| 国产精品全国免费观看高清| 精品国产露脸精彩对白| 日韩三级在线观看| 91精品国产福利在线观看| 欧美精品电影在线播放| 在线视频国内自拍亚洲视频| 91麻豆精品一区二区三区| 成人黄色片在线观看| 99久久免费精品高清特色大片| 成人夜色视频网站在线观看| 丁香激情综合五月| 成人综合在线视频| aaa国产一区| 色伊人久久综合中文字幕| 色婷婷久久一区二区三区麻豆| 色婷婷久久久综合中文字幕| 日本高清无吗v一区| 91国产免费看| 欧美一个色资源| 久久综合av免费| 中文欧美字幕免费| 亚洲欧美日韩国产综合| 亚洲女同女同女同女同女同69| 亚洲柠檬福利资源导航| 亚洲在线成人精品| 蜜臀精品一区二区三区在线观看| 久久国产尿小便嘘嘘| 国产福利不卡视频| 91免费版pro下载短视频| 欧美视频中文一区二区三区在线观看| 欧美日产国产精品| 精品福利一二区| 欧美一区二区三区四区在线观看| 欧美大片一区二区| 国产精品家庭影院| 亚洲图片欧美综合| 久久99久久99小草精品免视看| 国产精品资源在线看| 91久久精品一区二区三| 欧美一区二区性放荡片| 国产精品欧美久久久久无广告 | 欧美性大战久久| 精品国产乱码久久久久久闺蜜| 日韩久久精品一区| 国产精品久久久久9999吃药| 午夜精品爽啪视频| 成人午夜视频网站| 欧美一区二区三区四区久久| 国产精品二区一区二区aⅴ污介绍| 亚洲成人在线免费| 国产成人免费网站| 日韩欧美国产一区在线观看| 国产精品的网站| 久久精品国产免费看久久精品| av一区二区三区黑人| 日韩精品在线一区二区| 亚洲另类在线一区| 高清shemale亚洲人妖|