static int Dump( char *aStrTID, char *aAddr ) { extern int quicktest() ; OZ_Header header ; Monitor monitor ; TKey key ; OzRecvChannel chan ; if ( aStrTID == NULL || aAddr == NULL ) return( 1 ) ; key.tid = OzStrtol( aStrTID, 0, 0 ) ; header = (OZ_Header)OzStrtoul( aAddr, 0, 0 ) ; if ( OzMapThreadTable( where_sub, &key ) <= 0 ) { OzOutput( -1, "Not found thread %d.\n", key.tid ) ; return( -1 ) ; } chan = (OzRecvChannel)key.t->channel ; if ( chan == NULL ) { OzOutput( -1, "No channel\n" ) ; goto error ; } if ( ! quicktest( header, chan->o->heap, 1 ) ) { OzOutput( -1, "part[0x%0x] ng\n", header ) ; goto error ; } if ( header->h == LOCAL || header->h == STATIC ) { header -= header->e+1 ; } else { OzOutput( -1, "not object\n" ) ; goto error ; } if ( ! quicktest( header, chan->o->heap, 1 ) ) { OzOutput( -1, "all[0x%0x] ng\n", header ) ; goto error ; } monitor = (Monitor)header->t ; if ( ! quicktest( monitor, chan->o->heap, 1 ) ) { OzOutput( -1, "monitor[0x%x] ng\n", monitor ) ; goto error ; } OzOutput( -1, "Locked thread %d\n", monitor->tid ) ; error: OzResumeThread( key.t ) ; return( 0 ) ; }
int gru_kservices_init(struct gru_state *gru) { struct gru_blade_state *bs; struct gru_context_configuration_handle *cch; unsigned long cbr_map, dsr_map; int err, num, cpus_possible; /* * Currently, resources are reserved ONLY on the second chiplet * on each blade. This leaves ALL resources on chiplet 0 available * for user code. */ bs = gru->gs_blade; if (gru != &bs->bs_grus[1]) return 0; cpus_possible = uv_blade_nr_possible_cpus(gru->gs_blade_id); num = GRU_NUM_KERNEL_CBR * cpus_possible; cbr_map = gru_reserve_cb_resources(gru, GRU_CB_COUNT_TO_AU(num), NULL); gru->gs_reserved_cbrs += num; num = GRU_NUM_KERNEL_DSR_BYTES * cpus_possible; dsr_map = gru_reserve_ds_resources(gru, GRU_DS_BYTES_TO_AU(num), NULL); gru->gs_reserved_dsr_bytes += num; gru->gs_active_contexts++; __set_bit(KERNEL_CTXNUM, &gru->gs_context_map); cch = get_cch(gru->gs_gru_base_vaddr, KERNEL_CTXNUM); bs->kernel_cb = get_gseg_base_address_cb(gru->gs_gru_base_vaddr, KERNEL_CTXNUM, 0); bs->kernel_dsr = get_gseg_base_address_ds(gru->gs_gru_base_vaddr, KERNEL_CTXNUM, 0); lock_cch_handle(cch); cch->tfm_fault_bit_enable = 0; cch->tlb_int_enable = 0; cch->tfm_done_bit_enable = 0; cch->unmap_enable = 1; err = cch_allocate(cch, 0, cbr_map, dsr_map); if (err) { gru_dbg(grudev, "Unable to allocate kernel CCH: gru %d, err %d\n", gru->gs_gid, err); BUG(); } if (cch_start(cch)) { gru_dbg(grudev, "Unable to start kernel CCH: gru %d, err %d\n", gru->gs_gid, err); BUG(); } unlock_cch_handle(cch); if (gru_options & GRU_QUICKLOOK) quicktest(gru); return 0; }
int main() { test_CMS(); quicktest(); return 0; }