Skip to content

Commit

Permalink
added get_sys_ram_info binding
Browse files Browse the repository at this point in the history
  • Loading branch information
JkLondon committed Jan 16, 2025
1 parent 1871866 commit c1d6aee
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 0 deletions.
17 changes: 17 additions & 0 deletions mdbx/mdbx.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,20 @@ CGO_CFLAGS="${CGO_CFLAGS} -DMDBX_DEBUG=1 -DMDBX_FORCE_ASSERTIONS=1 -v" go run ./
func Version() string {
return C.GoString(C.mdbx_version.git.describe)
}

func GetSysRamInfo() (pageSize, totalPages, availablePages int, err error) {
var cPageSize, cTotalPages, cAvailablePages C.intptr_t

// Вызываем C-функцию, передавая туда указатели на тип C.intptr_t
ret := C.mdbx_get_sysraminfo(&cPageSize, &cTotalPages, &cAvailablePages)
if ret != success {
return 0, 0, 0, operrno("mdbx_cursor_count", ret)
}

// Преобразуем результаты обратно в Go int
pageSize = int(cPageSize)
totalPages = int(cTotalPages)
availablePages = int(cAvailablePages)

return
}
56 changes: 56 additions & 0 deletions mdbx/mdbx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,3 +219,59 @@ func TestTest1(t *testing.T) {
// t.Error("empty version string")
// }
//}

func TestGetSysRamInfo(t *testing.T) {
env, err1 := NewEnv(Default)
if err1 != nil {
t.Fatalf("Cannot create environment: %s", err1)
}
err1 = env.SetGeometry(-1, -1, 1024*1024, -1, -1, 4096)
if err1 != nil {
t.Fatalf("Cannot set mapsize: %s", err1)
}
path := t.TempDir()
err1 = env.Open(path, 0, 0664)
defer env.Close()
if err1 != nil {
t.Fatalf("Cannot open environment: %s", err1)
}

var db DBI
if err := env.Update(func(txn *Txn) (err error) {
db, err = txn.OpenRoot(0)
if err != nil {
panic(err)
}

err = txn.Put(db, nil, []byte{}, NoOverwrite)
if err != nil {
panic(err)
}
err = txn.Put(db, []byte{}, []byte{}, NoOverwrite)
if err == nil { //expect err: MDBX_KEYEXIST
panic(err)
}
err = txn.Put(db, []byte{1}, []byte{}, NoOverwrite)
if err != nil {
panic(err)
}
err = txn.Put(db, []byte{2}, nil, NoOverwrite)
if err != nil {
panic(err)
}
err = txn.Put(db, []byte{3}, []byte{1}, NoOverwrite)
if err != nil {
panic(err)
}
return nil
}); err != nil {
t.Fatal(err)
}

pageSize, totalPages, availablePages, err := GetSysRamInfo()
if err != nil {
t.Fatal(err)
}

println(pageSize, totalPages, availablePages)
}

0 comments on commit c1d6aee

Please sign in to comment.