From e2c546a782e89be59df0091648b062a325d03992 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Tue, 2 Aug 2011 07:17:49 -0700 Subject: [PATCH] first steps to realize a SVM subsystem --- arch/x86/include/asm/svm.h | 48 ++++++++++++++++++++++++++++++++++++++ arch/x86/mm/Makefile | 2 +- arch/x86/mm/svm.c | 38 ++++++++++++++++++++++++++++++ arch/x86/scc/RCCE_admin.c | 2 +- 4 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 arch/x86/include/asm/svm.h create mode 100644 arch/x86/mm/svm.c diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h new file mode 100644 index 00000000..090d1072 --- /dev/null +++ b/arch/x86/include/asm/svm.h @@ -0,0 +1,48 @@ +/* + * Copyright 2011 Stefan Lankes, Chair for Operating Systems, + * RWTH Aachen University + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of MetalSVM. + */ + +#ifndef __ARCH_SVM_H__ +#define __ARCH_SVM_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** @brief Memory allocator of the SVM subsystem. + * + * Like RCCE function, belongs svmmalloc to the synchronous + * function. + * + * @return Pointer to the new memory range + */ +void* svmmalloc(size_t size); + +/** @brief Frees memory, which is managed by the SVM subsystem + * + * Like RCCE function, belongs svmfree to the synchronous function. + */ +void svmfree(void* addr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 2f9b1834..09392539 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile @@ -1,4 +1,4 @@ -C_source := page.c +C_source := page.c svm.c MODULE := arch_x86_mm include $(TOPDIR)/Makefile.inc diff --git a/arch/x86/mm/svm.c b/arch/x86/mm/svm.c new file mode 100644 index 00000000..06e4d3d4 --- /dev/null +++ b/arch/x86/mm/svm.c @@ -0,0 +1,38 @@ +/* + * Copyright 2011 Stefan Lankes, Chair for Operating Systems, + * RWTH Aachen University + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of MetalSVM. + */ + +#include +#include +#include +#include +#ifdef CONFIG_ROCKCREEK +#include +#include +#include +#endif + +void* svmmalloc(size_t size) +{ + return (void*) RCCE_shmalloc(size); +} + +void svmfree(void* addr) +{ + RCCE_free((t_vcharp) addr); +} diff --git a/arch/x86/scc/RCCE_admin.c b/arch/x86/scc/RCCE_admin.c index dc7db27d..0c9f9303 100644 --- a/arch/x86/scc/RCCE_admin.c +++ b/arch/x86/scc/RCCE_admin.c @@ -336,7 +336,7 @@ int RCCE_init( RCCE_malloc_init(RCCE_comm_buffer[RCCE_IAM],RCCE_BUFF_SIZE); #ifdef SHMADD - RCCE_shmalloc_init(map_region(NULL, RC_SHM_BUFFER_START()+RCCE_SHM_BUFFER_offset, RCCE_SHM_SIZE_MAX/PAGE_SIZE, MAP_KERNEL_SPACE|MAP_NO_CACHE), RCCE_SHM_SIZE_MAX); + RCCE_shmalloc_init(map_region(NULL, RC_SHM_BUFFER_START()+RCCE_SHM_BUFFER_offset, RCCE_SHM_SIZE_MAX/PAGE_SIZE, MAP_KERNEL_SPACE|MAP_MPE), RCCE_SHM_SIZE_MAX); #ifdef SHMDBG kprintf("\n%d:%s:%d: RCCE_SHM_BUFFER_offset, RCCE_SHM_SIZE_MAX: %x %x\n", RCCE_IAM, __FILE__,__LINE__,RCCE_SHM_BUFFER_offset ,RCCE_SHM_SIZE_MAX);