/
/
opt
/
golang
/
1.19.4
/
misc
/
cgo
/
testasan
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.137
PHP 8.3.16
Dir:
/opt/golang/1.19.4/misc/cgo/testasan
Edit:
/opt/golang/1.19.4/misc/cgo/testasan/main.go
// Copyright 2013 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main /* #include <sys/mman.h> #include <pthread.h> #include <unistd.h> void ctor(void) __attribute__((constructor)); static void* thread(void*); void ctor(void) { // occupy memory where Go runtime would normally map heap mmap((void*)0x00c000000000, 64<<10, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0); // allocate 4K every 10us pthread_t t; pthread_create(&t, 0, thread, 0); } static void* thread(void *p) { for(;;) { usleep(10000); mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); } return 0; } */ import "C" import ( "fmt" "os" "path/filepath" "time" ) func main() { start := time.Now() // ensure that we can function normally var v [][]byte for i := 0; i < 1000; i++ { time.Sleep(10 * time.Microsecond) v = append(v, make([]byte, 64<<10)) } fmt.Printf("ok\t%s\t%s\n", filepath.Base(os.Args[0]), time.Since(start).Round(time.Millisecond)) }
Ukuran: 1.1 KB