llgo/c/hyper_related

This commit is contained in:
赵英杰
2024-07-18 10:28:14 +08:00
parent 519c850f17
commit 254acbbbe2
11 changed files with 105 additions and 138 deletions

13
c/sys/_wrap/fddef.c Normal file
View File

@@ -0,0 +1,13 @@
#include <sys/types.h>
int fd_isset(int n, fd_set *fd) {
return FD_ISSET(n, fd);
}
void fdSet(int n, fd_set *fd) {
FD_SET(n, fd);
}
void fd_zero(fd_set *fd) {
FD_ZERO(fd);
}

31
c/sys/select.go Normal file
View File

@@ -0,0 +1,31 @@
package sys
import (
"github.com/goplus/llgo/c/syscall"
_ "unsafe"
"github.com/goplus/llgo/c"
)
const (
LLGoFiles = "_wrap/fddef.c"
LLGoPackage = "link"
)
// (TODO) merge to timeval
type TimeVal struct {
TvSec c.Long
TvUSec c.Int
}
//go:linkname FD_ZERO C.fd_zero
func FD_ZERO(fdSet *syscall.FdSet)
//go:linkname FD_SET C.fdSet
func FD_SET(fd c.Int, fdSet *syscall.FdSet)
//go:linkname FD_ISSET C.fd_isset
func FD_ISSET(fd c.Int, fdSet *syscall.FdSet) c.Int
//go:linkname Select C.select
func Select(n c.Int, r *syscall.FdSet, w *syscall.FdSet, e *syscall.FdSet, timeout *TimeVal) c.Int