You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2021/06/17 11:22:09 UTC
[mynewt-core] 04/06: hal: Make common native sbrk implementation
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 054d3c9d21931114a04f9b1bc6ffba7814d3562e
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Thu Jun 17 09:17:48 2021 +0200
hal: Make common native sbrk implementation
All sbrk.c files for sim were identical.
This moves code to one place
---
hw/bsp/native-mips/src/sbrk.c | 60 ----------------------
hw/bsp/native/src/sbrk.c | 60 ----------------------
hw/hal/src/sbrk.c | 2 +-
.../native-armv7/src/sbrk.c => hal/src/sbrk_sim.c} | 6 +++
4 files changed, 7 insertions(+), 121 deletions(-)
diff --git a/hw/bsp/native-mips/src/sbrk.c b/hw/bsp/native-mips/src/sbrk.c
deleted file mode 100644
index f122dd8..0000000
--- a/hw/bsp/native-mips/src/sbrk.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-#include <sys/mman.h>
-#include <unistd.h>
-
-#include <hal/hal_bsp.h>
-
-extern int getpagesize(void);
-
-static void *cont;
-static int sys_pagesize;
-static int cont_left;
-
-void *
-_sbrk(int incr)
-{
- void *result;
-
- if (!sys_pagesize) {
- sys_pagesize = getpagesize();
- }
- if (cont && incr <= cont_left) {
- result = cont;
- cont_left -= incr;
- if (cont_left) {
- cont = (char *)cont + incr;
- } else {
- cont = NULL;
- }
- return result;
- }
- result = mmap(NULL, incr, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED,
- -1, 0);
- if (result) {
- cont_left = sys_pagesize - (incr % sys_pagesize);
- if (cont_left) {
- cont = (char *)result + incr;
- } else {
- cont = NULL;
- }
- }
- return result;
-}
diff --git a/hw/bsp/native/src/sbrk.c b/hw/bsp/native/src/sbrk.c
deleted file mode 100644
index f122dd8..0000000
--- a/hw/bsp/native/src/sbrk.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-#include <sys/mman.h>
-#include <unistd.h>
-
-#include <hal/hal_bsp.h>
-
-extern int getpagesize(void);
-
-static void *cont;
-static int sys_pagesize;
-static int cont_left;
-
-void *
-_sbrk(int incr)
-{
- void *result;
-
- if (!sys_pagesize) {
- sys_pagesize = getpagesize();
- }
- if (cont && incr <= cont_left) {
- result = cont;
- cont_left -= incr;
- if (cont_left) {
- cont = (char *)cont + incr;
- } else {
- cont = NULL;
- }
- return result;
- }
- result = mmap(NULL, incr, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED,
- -1, 0);
- if (result) {
- cont_left = sys_pagesize - (incr % sys_pagesize);
- if (cont_left) {
- cont = (char *)result + incr;
- } else {
- cont = NULL;
- }
- }
- return result;
-}
diff --git a/hw/hal/src/sbrk.c b/hw/hal/src/sbrk.c
index 1c11031..3a54b5e 100644
--- a/hw/hal/src/sbrk.c
+++ b/hw/hal/src/sbrk.c
@@ -19,7 +19,7 @@
#include <syscfg/syscfg.h>
-#if MYNEWT_VAL(HAL_SBRK)
+#if MYNEWT_VAL(HAL_SBRK) && !MYNEWT_VAL(BSP_SIMULATED)
static char *sbrk_base;
static char *sbrk_limit;
diff --git a/hw/bsp/native-armv7/src/sbrk.c b/hw/hal/src/sbrk_sim.c
similarity index 94%
rename from hw/bsp/native-armv7/src/sbrk.c
rename to hw/hal/src/sbrk_sim.c
index f122dd8..2434a47 100644
--- a/hw/bsp/native-armv7/src/sbrk.c
+++ b/hw/hal/src/sbrk_sim.c
@@ -17,6 +17,10 @@
* under the License.
*/
+#include <syscfg/syscfg.h>
+
+#if MYNEWT_VAL(HAL_SBRK) && MYNEWT_VAL(BSP_SIMULATED)
+
#include <sys/mman.h>
#include <unistd.h>
@@ -58,3 +62,5 @@ _sbrk(int incr)
}
return result;
}
+
+#endif