Description: <short summary of the patch>
TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.
.
gcl (2.6.12-24) unstable; urgency=medium
.
* Version_2_6_13pre30
Author: Camm Maguire <camm@debian.org>
---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:
Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: <YYYY-MM-DD>
--- gcl-2.6.12.orig/h/386-kfreebsd.h
+++ gcl-2.6.12/h/386-kfreebsd.h
@@ -46,3 +46,4 @@
#define RELOC_H "elf32_i386_reloc.h"
#define BRK_DOES_NOT_GUARANTEE_ALLOCATION
+#define FREEBSD
--- gcl-2.6.12.orig/h/amd64-kfreebsd.h
+++ gcl-2.6.12/h/amd64-kfreebsd.h
@@ -23,3 +23,4 @@
#define RELOC_H "elf64_i386_reloc.h"
#define BRK_DOES_NOT_GUARANTEE_ALLOCATION
+#define FREEBSD
--- gcl-2.6.12.orig/h/elf64_mips_reloc_special.h
+++ gcl-2.6.12/h/elf64_mips_reloc_special.h
@@ -23,7 +23,6 @@ write_stub(ul s,ul *got,ul *gote) {
call_16_tramp *t=(void *)gote;
*t=t1;
- *got=can_gp;
t->entry=(ul)(gote+2);
t->gotoff=s;
--- gcl-2.6.12.orig/o/main.c
+++ gcl-2.6.12/o/main.c
@@ -152,6 +152,7 @@ mbrk(void *v) {
static ufixnum
get_phys_pages_no_malloc(char n) {
+
MEMORYSTATUS m;
m.dwLength=sizeof(m);
@@ -166,6 +167,7 @@ get_phys_pages_no_malloc(char n) {
static ufixnum
get_phys_pages_no_malloc(char n) {
+
uint64_t s;
size_t z=sizeof(s);
int m[2]={CTL_HW,HW_MEMSIZE};
@@ -186,33 +188,30 @@ get_phys_pages_no_malloc(char n) {
}
-#else
+#elif defined(FREEBSD)
+
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+static ufixnum
+get_phys_pages_no_malloc(char n) {
+
+ size_t i,len=sizeof(i);
-ufixnum
-get_proc_meminfo_value_in_pages(const char *k) {
- int l,m;
- char b[PAGESIZE],*c;
- ufixnum n;
+ return (sysctlbyname("hw.physmem",&i,&len,NULL,0) ? 0 : i)>>PAGEWIDTH;
- massert((l=open("/proc/meminfo",O_RDONLY))!=-1);
- massert((n=read(l,b,sizeof(b)))<sizeof(b));
- b[n]=0;
- massert(!close(l));
- massert((c=strstr(b,k)));
- c+=strlen(k);
- massert(sscanf(c,"%lu%n",&n,&m)==1);
- massert(!strncmp(c+m," kB\n",4));
- return n>>(PAGEWIDTH-10);
}
+#else /*Linux*/
+
#include <sys/sysinfo.h>
static ufixnum
get_phys_pages_no_malloc(char freep) {
struct sysinfo s;
- sysinfo(&s);
- return ((freep ? s.freeram : s.totalram)>>PAGEWIDTH)*s.mem_unit;
+
+ return sysinfo(&s) ? 0 : ((freep ? s.freeram : s.totalram)>>PAGEWIDTH)*s.mem_unit;
}