Ejemplo n.º 1
0
void ExecutionStack::iterate(OopVisitor* visitor) {
#if USE_OOP_VISITOR
  Oop::iterate(visitor);
  NamedField id("thread", true);
  visitor->do_oop(&id, thread_offset(), true);
#endif
}
Ejemplo n.º 2
0
void ThreadObj::verify_fields() {
  UsingFastOops fast_oops;
  InstanceClass::Fast ic = Universe::thread_class();
  ic().verify_instance_field("priority",      "I",
                              priority_offset());
  ic().verify_instance_field("vm_thread",     "Ljava/lang/Object;",
                              thread_offset());
  ic().verify_instance_field("is_terminated", "I",
                              is_terminated_offset());
  ic().verify_instance_field("is_stillborn",  "I",
                              is_stillborn_offset());
#if ENABLE_CLDC_11
  ic().verify_instance_field("name",          "[C",
                              name_offset());
#endif
}
Ejemplo n.º 3
0
 void clear_thread() {
   GUARANTEE(is_terminated(), "Thread should be terminated");
   obj_field_clear(thread_offset());
 }
Ejemplo n.º 4
0
 void set_thread(Oop* value) {
   GUARANTEE(is_unstarted(), "thread should not be started yet");
   obj_field_put(thread_offset(), value); 
 }
Ejemplo n.º 5
0
 // Returns VM thread object corresponding to this java.lang.Thread instance.
 ReturnOop thread() {
   return obj_field(thread_offset());
 }
Ejemplo n.º 6
0
static int CreateMaxThreads(void)
{
    int i;
    int res = 1;
   
    // MIPS32 address space ends at 0x80000000
#if (defined(L4_ARCH_MIPS) && defined(L4_32BIT))
    unsigned long utcb_base = 0x70000000;
#else
    unsigned long utcb_base = 0xb0000000;
#endif

    void * utcb = (void *)utcb_base;
    L4_Fpage_t utcb_area = L4_Fpage(utcb_base, 0x01000000);
    int max;
    L4_Word_t result;
    L4_SpaceId_t space;

    result = okl4_kspaceid_allocany(spaceid_pool, &space);
    fail_unless(result == OKL4_OK, "Failed to allocate any space id.");

    /* Create first thread (and address space) */
#ifdef NO_UTCB_RELOCATE
    utcb_area = L4_Nilpage;
    utcb = (void*)-1ul;
#endif

    res = create_address_space(space, utcb_area);

    i = 3;  // start creating threads after controlling space

    fail_unless(res == 1, "Failed to create controlling space\n");

    /* create threads */
    do {
        if (utcb) {
            utcb = (void *)(utcb_base + i * L4_GetUtcbSize());
        }
        if (!isSystemThread(thread_offset(i))) {
            res = L4_ThreadControl(thread_offset(i), space,
                    default_thread_handler, L4_nilthread, L4_nilthread, 0, (void *)utcb);
        }
        i++;
    } while (res == 1);

    max = i-3;

    /* delete threads */
    for (; i >= 3; i--) {
        if (!isSystemThread(thread_offset(i))) {
            res = L4_ThreadControl(thread_offset(i), L4_nilspace, L4_nilthread,
                    L4_nilthread, L4_nilthread, 0, (void *)0);
        }
    }

    res = L4_SpaceControl(space, L4_SpaceCtrl_delete,
            KTEST_CLIST, L4_Nilpage, 0, NULL);
    okl4_kspaceid_free(spaceid_pool, space);

    return max;
}
Ejemplo n.º 7
0
 void set_thread(ThreadObj* value) {
   obj_field_put(thread_offset(), value);
 }
Ejemplo n.º 8
0
 void clear_thread() { obj_field_clear(thread_offset()); }
Ejemplo n.º 9
0
 void set_thread(Thread* value) { 
   obj_field_put(thread_offset(), (Oop*) value); 
 }