--- Gnu-Mach/kern/processor.c 2020/09/02 04:36:56 1.1 +++ Gnu-Mach/kern/processor.c 2020/09/02 04:47:26 1.1.1.4 @@ -1,25 +1,25 @@ -/* +/* * Mach Operating System * Copyright (c) 1993-1988 Carnegie Mellon University * All Rights Reserved. - * + * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. - * + * * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * + * * Carnegie Mellon requests users of this software to return to - * + * * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU * School of Computer Science * Carnegie Mellon University * Pittsburgh PA 15213-3890 - * + * * any improvements or extensions that they make and grant Carnegie Mellon * the rights to redistribute these changes. */ @@ -27,17 +27,18 @@ * processor.c: processor and processor_set manipulation routines. */ -#include -#include -#include +#include #include #include #include #include #include +#include +#include #include #include +#include #include #include #include @@ -46,8 +47,8 @@ #include #if MACH_HOST -#include -zone_t pset_zone; +#include +struct kmem_cache pset_cache; #endif /* MACH_HOST */ @@ -65,18 +66,11 @@ processor_t master_processor; processor_t processor_ptr[NCPUS]; /* - * Forward declarations. - */ -void quantum_set(processor_set_t); -void pset_init(processor_set_t); -void processor_init(processor_t, int); - -/* * Bootstrap the processor/pset system so the scheduler can run. */ void pset_sys_bootstrap(void) { - register int i; + int i; pset_init(&default_pset); default_pset.empty = FALSE; @@ -108,14 +102,14 @@ void pset_sys_bootstrap(void) */ void pset_sys_init(void) { - register int i; - register processor_t processor; + int i; + processor_t processor; /* - * Allocate the zone for processor sets. + * Allocate the cache for processor sets. */ - pset_zone = zinit(sizeof(struct processor_set), 128*PAGE_SIZE, - PAGE_SIZE, 0, "processor sets"); + kmem_cache_init(&pset_cache, "processor_set", + sizeof(struct processor_set), 0, NULL, NULL, NULL, 0); /* * Give each processor a control port. @@ -137,7 +131,7 @@ void pset_sys_init(void) */ void pset_init( - register processor_set_t pset) + processor_set_t pset) { int i; @@ -188,7 +182,7 @@ void pset_init( */ void processor_init( - register processor_t pr, + processor_t pr, int slot_num) { int i; @@ -329,7 +323,7 @@ void thread_change_psets( queue_enter(&new_pset->threads, thread, thread_t, pset_threads); thread->processor_set = new_pset; new_pset->thread_count++; -} +} /* * pset_deallocate: @@ -362,7 +356,7 @@ void pset_deallocate( */ pset->ref_count = 1; pset_ref_unlock(pset); - + simple_lock(&all_psets_lock); pset_ref_lock(pset); if (--pset->ref_count > 0) { @@ -394,7 +388,7 @@ void pset_deallocate( /* * That's it, free data structure. */ - zfree(pset_zone, (vm_offset_t)pset); + kmem_cache_free(&pset_cache, (vm_offset_t)pset); #endif /* MACH_HOST */ } @@ -413,14 +407,14 @@ void pset_reference( kern_return_t processor_info( - register processor_t processor, + processor_t processor, int flavor, host_t *host, processor_info_t info, natural_t *count) { - register int slot_num, state; - register processor_basic_info_t basic_info; + int slot_num, state; + processor_basic_info_t basic_info; if (processor == PROCESSOR_NULL) return KERN_INVALID_ARGUMENT; @@ -440,7 +434,7 @@ processor_info( else basic_info->running = TRUE; basic_info->slot_num = slot_num; - if (processor == master_processor) + if (processor == master_processor) basic_info->is_master = TRUE; else basic_info->is_master = FALSE; @@ -502,7 +496,7 @@ void quantum_set( processor_set_t pset) { #if NCPUS > 1 - register int i,ncpus; + int i, ncpus; ncpus = pset->processor_count; @@ -538,7 +532,7 @@ processor_set_create( if (host == HOST_NULL) return KERN_INVALID_ARGUMENT; - pset = (processor_set_t) zalloc(pset_zone); + pset = (processor_set_t) kmem_cache_alloc(&pset_cache); pset_init(pset); pset_reference(pset); /* for new_set out argument */ pset_reference(pset); /* for new_name out argument */ @@ -566,8 +560,8 @@ processor_set_create( kern_return_t processor_set_destroy( processor_set_t pset) { - register queue_entry_t elem; - register queue_head_t *list; + queue_entry_t elem; + queue_head_t *list; if (pset == PROCESSOR_SET_NULL || pset == &default_pset) return KERN_INVALID_ARGUMENT; @@ -613,7 +607,7 @@ kern_return_t processor_set_destroy( pset_lock(pset); } } - + if (pset->processor_count > 0) { list = &pset->processors; while(!queue_empty(list)) { @@ -639,29 +633,23 @@ kern_return_t processor_set_destroy( } #else /* MACH_HOST */ - + kern_return_t processor_set_create( host_t host, processor_set_t *new_set, processor_set_t *new_name) { -#ifdef lint - host++; new_set++; new_name++; -#endif /* lint */ return KERN_FAILURE; } kern_return_t processor_set_destroy( processor_set_t pset) { -#ifdef lint - pset++; -#endif /* lint */ return KERN_FAILURE; } -#endif MACH_HOST +#endif /* MACH_HOST */ kern_return_t processor_get_assignment( @@ -691,7 +679,7 @@ processor_set_info( return KERN_INVALID_ARGUMENT; if (flavor == PROCESSOR_SET_BASIC_INFO) { - register processor_set_basic_info_t basic_info; + processor_set_basic_info_t basic_info; if (*count < PROCESSOR_SET_BASIC_INFO_COUNT) return KERN_FAILURE; @@ -711,7 +699,7 @@ processor_set_info( return KERN_SUCCESS; } else if (flavor == PROCESSOR_SET_SCHED_INFO) { - register processor_set_sched_info_t sched_info; + processor_set_sched_info_t sched_info; if (*count < PROCESSOR_SET_SCHED_INFO_COUNT) return KERN_FAILURE; @@ -756,8 +744,8 @@ processor_set_max_priority( pset->max_priority = max_priority; if (change_threads) { - register queue_head_t *list; - register thread_t thread; + queue_head_t *list; + thread_t thread; list = &pset->threads; queue_iterate(list, thread, thread_t, pset_threads) { @@ -827,8 +815,8 @@ processor_set_policy_disable( pset->policies &= ~policy; if (change_threads) { - register queue_head_t *list; - register thread_t thread; + queue_head_t *list; + thread_t thread; list = &pset->threads; queue_iterate(list, thread, thread_t, pset_threads) { @@ -975,7 +963,7 @@ processor_set_things( return KERN_RESOURCE_SHORTAGE; } - bcopy((char *) addr, (char *) newaddr, size_needed); + memcpy((void *) newaddr, (void *) addr, size_needed); kfree(addr, size); addr = newaddr; }