Skip to content

Commit c1d6aee

Browse files
author
JkLondon
committed
added get_sys_ram_info binding
1 parent 1871866 commit c1d6aee

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

mdbx/mdbx.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,20 @@ CGO_CFLAGS="${CGO_CFLAGS} -DMDBX_DEBUG=1 -DMDBX_FORCE_ASSERTIONS=1 -v" go run ./
172172
func Version() string {
173173
return C.GoString(C.mdbx_version.git.describe)
174174
}
175+
176+
func GetSysRamInfo() (pageSize, totalPages, availablePages int, err error) {
177+
var cPageSize, cTotalPages, cAvailablePages C.intptr_t
178+
179+
// Вызываем C-функцию, передавая туда указатели на тип C.intptr_t
180+
ret := C.mdbx_get_sysraminfo(&cPageSize, &cTotalPages, &cAvailablePages)
181+
if ret != success {
182+
return 0, 0, 0, operrno("mdbx_cursor_count", ret)
183+
}
184+
185+
// Преобразуем результаты обратно в Go int
186+
pageSize = int(cPageSize)
187+
totalPages = int(cTotalPages)
188+
availablePages = int(cAvailablePages)
189+
190+
return
191+
}

mdbx/mdbx_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,3 +219,59 @@ func TestTest1(t *testing.T) {
219219
// t.Error("empty version string")
220220
// }
221221
//}
222+
223+
func TestGetSysRamInfo(t *testing.T) {
224+
env, err1 := NewEnv(Default)
225+
if err1 != nil {
226+
t.Fatalf("Cannot create environment: %s", err1)
227+
}
228+
err1 = env.SetGeometry(-1, -1, 1024*1024, -1, -1, 4096)
229+
if err1 != nil {
230+
t.Fatalf("Cannot set mapsize: %s", err1)
231+
}
232+
path := t.TempDir()
233+
err1 = env.Open(path, 0, 0664)
234+
defer env.Close()
235+
if err1 != nil {
236+
t.Fatalf("Cannot open environment: %s", err1)
237+
}
238+
239+
var db DBI
240+
if err := env.Update(func(txn *Txn) (err error) {
241+
db, err = txn.OpenRoot(0)
242+
if err != nil {
243+
panic(err)
244+
}
245+
246+
err = txn.Put(db, nil, []byte{}, NoOverwrite)
247+
if err != nil {
248+
panic(err)
249+
}
250+
err = txn.Put(db, []byte{}, []byte{}, NoOverwrite)
251+
if err == nil { //expect err: MDBX_KEYEXIST
252+
panic(err)
253+
}
254+
err = txn.Put(db, []byte{1}, []byte{}, NoOverwrite)
255+
if err != nil {
256+
panic(err)
257+
}
258+
err = txn.Put(db, []byte{2}, nil, NoOverwrite)
259+
if err != nil {
260+
panic(err)
261+
}
262+
err = txn.Put(db, []byte{3}, []byte{1}, NoOverwrite)
263+
if err != nil {
264+
panic(err)
265+
}
266+
return nil
267+
}); err != nil {
268+
t.Fatal(err)
269+
}
270+
271+
pageSize, totalPages, availablePages, err := GetSysRamInfo()
272+
if err != nil {
273+
t.Fatal(err)
274+
}
275+
276+
println(pageSize, totalPages, availablePages)
277+
}

0 commit comments

Comments
 (0)