This commit is contained in:
Prajwal B Mehendarkar 2026-10-12 12:23:15 +05:30 • committed by GitHub
commit aeccfd9cd5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 76 additions and 5 deletions

30
discover/cpu_aix.go Normal file
View file

@ -0,0 +1,30 @@
//go:build aix
package discover
/*
#include <unistd.h>
#include <sys/types.h>
#include <sys/vminfo.h>
*/
import "C"
import (
"fmt"
"unsafe"
)
func GetCPUMem() (memInfo, error) {
var mem memInfo
var vmi C.struct_vminfo
if ret := C.vmgetinfo(unsafe.Pointer(&vmi), C.VMINFO, C.sizeof_struct_vminfo); ret != 0 {
return mem, fmt.Errorf("vmgetinfo failed: %d", ret)
}
pageSize := uint64(C.sysconf(C._SC_PAGE_SIZE))
mem.TotalMemory = uint64(vmi.memsizepgs) * pageSize
mem.FreeMemory = uint64(vmi.numfrb) * pageSize
return mem, nil
}
func IsNUMA() bool {
return false
}

View file

@ -79,17 +79,28 @@ func open(path string, maxArraySize int) (_ *File, err error) {
switch {
case bytes.Equal(f.Magic[:], []byte("GGUF")):
f.byteOrder = binary.LittleEndian
var version uint32
if err := binary.Read(f.reader, binary.LittleEndian, &version); err != nil {
return nil, err
}
// In a Big-Endian GGUF starting with ASCII "GGUF", version 3 is encoded as 0x00000003,
// which binary.LittleEndian reads as 0x03000000 (50331648).
if version > 0x0000FFFF && (version&0x0000FFFF) == 0 {
f.byteOrder = binary.BigEndian
f.Version = (version >> 24) | ((version >> 8) & 0x0000FF00) | ((version << 8) & 0x00FF0000) | (version << 24)
} else {
f.byteOrder = binary.LittleEndian
f.Version = version
}
case bytes.Equal(f.Magic[:], []byte("FUGG")):
f.byteOrder = binary.BigEndian
if err := binary.Read(f.reader, f.byteOrder, &f.Version); err != nil {
return nil, err
}
default:
return nil, fmt.Errorf("%w file type %v", ErrUnsupported, f.Magic)
}
if err := binary.Read(f.reader, f.byteOrder, &f.Version); err != nil {
return nil, err
}
if f.Version < 1 {
return nil, fmt.Errorf("%w version %v", ErrUnsupported, f.Version)
}

View file

@ -520,6 +520,8 @@ func llamaServerLibraryPathEnv() string {
return "PATH"
case "darwin":
return "DYLD_LIBRARY_PATH"
case "aix":
return "LIBPATH"
default:
return "LD_LIBRARY_PATH"
}

7
llm/llm_aix.go Normal file
View file

@ -0,0 +1,7 @@
package llm
import (
"syscall"
)
var LlamaServerSysProcAttr = &syscall.SysProcAttr{}

21
readline/term_aix.go Normal file
View file

@ -0,0 +1,21 @@
//go:build aix
package readline
import (
"golang.org/x/sys/unix"
)
func getTermios(fd uintptr) (*Termios, error) {
t, err := unix.IoctlGetTermios(int(fd), unix.TCGETS)
if err != nil {
return nil, err
}
termios := Termios(*t)
return &termios, nil
}
func setTermios(fd uintptr, termios *Termios) error {
t := unix.Termios(*termios)
return unix.IoctlSetTermios(int(fd), unix.TCSETS, &t)
}