Esempio n. 1
0
void ciReceiverTypeData::translate_receiver_data_from(ProfileData* data) {
  for (uint row = 0; row < row_limit(); row++) {
    klassOop k = data->as_ReceiverTypeData()->receiver(row);
    if (k != NULL) {
      ciKlass* klass = CURRENT_ENV->get_object(k)->as_klass();
      set_receiver(row, klass);
    }
  }
}
Esempio n. 2
0
void ciVirtualCallData::translate_from(ProfileData* data) {
  for (uint row = 0; row < row_limit(); row++) {
    klassOop k = data->as_VirtualCallData()->receiver(row);
    if (k) {
      ciKlass* klass = CURRENT_ENV->get_object(k)->as_klass();
      set_receiver(row, klass);
    }
  }
};
Esempio n. 3
0
void ciReceiverTypeData::translate_receiver_data_from(const ProfileData* data) {
  for (uint row = 0; row < row_limit(); row++) {
    Klass* k = data->as_ReceiverTypeData()->receiver(row);
    if (k != NULL) {
      ciKlass* klass = CURRENT_ENV->get_klass(k);
      CURRENT_ENV->ensure_metadata_alive(klass);
      set_receiver(row, klass);
    }
  }
}
Esempio n. 4
0
void
Ipc_sender<Derived>::send_msg(Receiver *receiver)
{
  set_receiver(receiver);

  if (!Config::Irq_shortcut)
    {
      // in profile mode, don't optimize
      // in non-profile mode, enqueue _after_ shortcut if still necessary
      sender_enqueue(receiver->sender_list(), 255);
      receiver->vcpu_set_irq_pending();
    }

  // if the thread is waiting for this interrupt, make it ready;
  // this will cause it to run irq->receiver_ready(), which
  // handles the rest

  // XXX careful!  This code may run in midst of an do_ipc()
  // operation (or similar)!
  if (Receiver::Rcv_state s = receiver->sender_ok(this))
    {
      Syscall_frame *dst_regs = derived()->transfer_msg(receiver);

      if (derived()->requeue_sender())
	{
	  sender_enqueue(receiver->sender_list(), 255);
	  receiver->vcpu_set_irq_pending();
	}

      // ipc completed
      receiver->state_change_dirty(~Thread_ipc_mask, 0);

      // in case a timeout was set
      receiver->reset_timeout();

      if (s == Receiver::Rs_ipc_receive)
	{
	  if (handle_shortcut(dst_regs, receiver))
	    return;
	}
      // we don't need to manipulate the state in a safe way
      // because we are still running with interrupts turned off
      receiver->state_add_dirty(Thread_ready);
      receiver->sched()->deblock(receiver->cpu());
      return;
    }

  if (Config::Irq_shortcut)
    {
      // in profile mode, don't optimize
      // in non-profile mode, enqueue after shortcut if still necessary
      sender_enqueue(receiver->sender_list(), 255);
      receiver->vcpu_set_irq_pending();
    }
}
Esempio n. 5
0
int main() {

    /* initialize the font */
    font_init();

    /* initialize timer */
    timer_init();

    /* allocate a window */
    win = window_alloc("Qonsole", /* title */
                       font_width*80, /* width */
                       font_height*25, /* height */
                       -1,             /* x (random) */
                       -1,             /* y (random) */
                       0xFF000000, /* bg color */
                       "/usr/share/icons/qonsole16.png" /* iconfile */);

    /* initialize window event handlers */
    win->press = pstty_press;

    /* initialize pstty */
    pstty_init();

    /* execute the shell */
    exec_shell("/bin/rash");

    /* set receiver */
    set_receiver(pstty_event);

    /* loop */
    gui_loop();

    /* done */
    return 0;

}
Esempio n. 6
0
void PageControl::initialize(std::string receiver_name) {
	set_receiver(receiver_name);
}