ptr.go 642 B

12345678910111213141516171819202122232425262728293031
  1. package internal
  2. import (
  3. "unsafe"
  4. "github.com/cilium/ebpf/internal/unix"
  5. )
  6. // NewPointer creates a 64-bit pointer from an unsafe Pointer.
  7. func NewPointer(ptr unsafe.Pointer) Pointer {
  8. return Pointer{ptr: ptr}
  9. }
  10. // NewSlicePointer creates a 64-bit pointer from a byte slice.
  11. func NewSlicePointer(buf []byte) Pointer {
  12. if len(buf) == 0 {
  13. return Pointer{}
  14. }
  15. return Pointer{ptr: unsafe.Pointer(&buf[0])}
  16. }
  17. // NewStringPointer creates a 64-bit pointer from a string.
  18. func NewStringPointer(str string) Pointer {
  19. p, err := unix.BytePtrFromString(str)
  20. if err != nil {
  21. return Pointer{}
  22. }
  23. return Pointer{ptr: unsafe.Pointer(p)}
  24. }