]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: implement SysUnused for openbsd
authorJoel Sing <jsing@google.com>
Mon, 26 Nov 2012 11:32:59 +0000 (22:32 +1100)
committerJoel Sing <jsing@google.com>
Mon, 26 Nov 2012 11:32:59 +0000 (22:32 +1100)
R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/6854079

src/pkg/runtime/defs_openbsd.go
src/pkg/runtime/defs_openbsd_386.h
src/pkg/runtime/defs_openbsd_amd64.h
src/pkg/runtime/mem_openbsd.c
src/pkg/runtime/sys_openbsd_386.s
src/pkg/runtime/sys_openbsd_amd64.s

index d0be0448063086bfe76492b55f98601bef5f5547..ff94b940561798a01c379eebbd2a066f35dc66bf 100644 (file)
@@ -34,6 +34,8 @@ const (
        MAP_PRIVATE = C.MAP_PRIVATE
        MAP_FIXED   = C.MAP_FIXED
 
+       MADV_FREE = C.MADV_FREE
+
        SA_SIGINFO = C.SA_SIGINFO
        SA_RESTART = C.SA_RESTART
        SA_ONSTACK = C.SA_ONSTACK
index 965e05e217a9c2feea5d8f237fea755253756309..323bb084af04dafdfa0082cd70fcbae58ae2f76d 100644 (file)
@@ -12,6 +12,8 @@ enum {
        MAP_PRIVATE     = 0x2,
        MAP_FIXED       = 0x10,
 
+       MADV_FREE       = 0x6,
+
        SA_SIGINFO      = 0x40,
        SA_RESTART      = 0x2,
        SA_ONSTACK      = 0x1,
index 159bbd8fdc1b5aa301296db2420dd96ed66f7363..429cc99f0e16731fcfbf191b67737b7bbab5404f 100644 (file)
@@ -12,6 +12,8 @@ enum {
        MAP_PRIVATE     = 0x2,
        MAP_FIXED       = 0x10,
 
+       MADV_FREE       = 0x6,
+
        SA_SIGINFO      = 0x40,
        SA_RESTART      = 0x2,
        SA_ONSTACK      = 0x1,
index 34ff31d9085c3a36978169fa67c1ed3176f3759a..43fef40ba4b3892645a988e9547e5b4e392c8d94 100644 (file)
@@ -28,9 +28,7 @@ runtime·SysAlloc(uintptr n)
 void
 runtime·SysUnused(void *v, uintptr n)
 {
-       USED(v);
-       USED(n);
-       // TODO(rsc): call madvise MADV_DONTNEED
+       runtime·madvise(v, n, MADV_FREE);
 }
 
 void
index 43a8dac62cc68d039857d70dcac8bfb5cb03c747..f002f8eafb8b2b222f9d310d95bf77d29a38941c 100644 (file)
@@ -84,6 +84,13 @@ TEXT runtime·munmap(SB),7,$-4
        MOVL    $0xf1, 0xf1             // crash
        RET
 
+TEXT runtime·madvise(SB),7,$-4
+       MOVL    $75, AX                 // sys_madvise
+       INT     $0x80
+       JAE     2(PC)
+       MOVL    $0xf1, 0xf1             // crash
+       RET
+
 TEXT runtime·setitimer(SB),7,$-4
        MOVL    $83, AX
        INT     $0x80
index 9717725d99437e9570aff541904e87a90e5e363c..6b674a51ac9a46cc9a20b818118c647c589d2ee7 100644 (file)
@@ -236,6 +236,16 @@ TEXT runtime·munmap(SB),7,$0
        MOVL    $0xf1, 0xf1             // crash
        RET
 
+TEXT runtime·madvise(SB),7,$0
+       MOVQ    addr+0(FP), DI          // arg 1 - addr
+       MOVQ    len+8(FP), SI           // arg 2 - len
+       MOVQ    behav+16(FP), DX        // arg 3 - behav
+       MOVQ    $75, AX                 // sys_madvise
+       SYSCALL
+       JCC     2(PC)
+       MOVL    $0xf1, 0xf1             // crash
+       RET
+
 TEXT runtime·sigaltstack(SB),7,$-8
        MOVQ    new+8(SP), DI           // arg 1 - nss
        MOVQ    old+16(SP), SI          // arg 2 - oss