home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / xen / interface / sched.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.4 KB  |  78 lines

  1. /******************************************************************************
  2.  * sched.h
  3.  *
  4.  * Scheduler state interactions
  5.  *
  6.  * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
  7.  */
  8.  
  9. #ifndef __XEN_PUBLIC_SCHED_H__
  10. #define __XEN_PUBLIC_SCHED_H__
  11.  
  12. #include "event_channel.h"
  13.  
  14. /*
  15.  * The prototype for this hypercall is:
  16.  *  long sched_op_new(int cmd, void *arg)
  17.  * @cmd == SCHEDOP_??? (scheduler operation).
  18.  * @arg == Operation-specific extra argument(s), as described below.
  19.  *
  20.  * **NOTE**:
  21.  * Versions of Xen prior to 3.0.2 provide only the following legacy version
  22.  * of this hypercall, supporting only the commands yield, block and shutdown:
  23.  *  long sched_op(int cmd, unsigned long arg)
  24.  * @cmd == SCHEDOP_??? (scheduler operation).
  25.  * @arg == 0               (SCHEDOP_yield and SCHEDOP_block)
  26.  *      == SHUTDOWN_* code (SCHEDOP_shutdown)
  27.  */
  28.  
  29. /*
  30.  * Voluntarily yield the CPU.
  31.  * @arg == NULL.
  32.  */
  33. #define SCHEDOP_yield       0
  34.  
  35. /*
  36.  * Block execution of this VCPU until an event is received for processing.
  37.  * If called with event upcalls masked, this operation will atomically
  38.  * reenable event delivery and check for pending events before blocking the
  39.  * VCPU. This avoids a "wakeup waiting" race.
  40.  * @arg == NULL.
  41.  */
  42. #define SCHEDOP_block       1
  43.  
  44. /*
  45.  * Halt execution of this domain (all VCPUs) and notify the system controller.
  46.  * @arg == pointer to sched_shutdown structure.
  47.  */
  48. #define SCHEDOP_shutdown    2
  49. struct sched_shutdown {
  50.     unsigned int reason; /* SHUTDOWN_* */
  51. };
  52. DEFINE_GUEST_HANDLE_STRUCT(sched_shutdown);
  53.  
  54. /*
  55.  * Poll a set of event-channel ports. Return when one or more are pending. An
  56.  * optional timeout may be specified.
  57.  * @arg == pointer to sched_poll structure.
  58.  */
  59. #define SCHEDOP_poll        3
  60. struct sched_poll {
  61.     GUEST_HANDLE(evtchn_port_t) ports;
  62.     unsigned int nr_ports;
  63.     uint64_t timeout;
  64. };
  65. DEFINE_GUEST_HANDLE_STRUCT(sched_poll);
  66.  
  67. /*
  68.  * Reason codes for SCHEDOP_shutdown. These may be interpreted by control
  69.  * software to determine the appropriate action. For the most part, Xen does
  70.  * not care about the shutdown code.
  71.  */
  72. #define SHUTDOWN_poweroff   0  /* Domain exited normally. Clean up and kill. */
  73. #define SHUTDOWN_reboot     1  /* Clean up, kill, and then restart.          */
  74. #define SHUTDOWN_suspend    2  /* Clean up, save suspend info, kill.         */
  75. #define SHUTDOWN_crash      3  /* Tell controller we've crashed.             */
  76.  
  77. #endif /* __XEN_PUBLIC_SCHED_H__ */
  78.