15#ifndef LIBCGLUE_PS2SDKAPI_H
16#define LIBCGLUE_PS2SDKAPI_H
33typedef int (*_libcglue_fdman_getfd_cb_t)(
void *userdata);
34typedef char *(*_libcglue_fdman_getfilename_cb_t)(
void *userdata);
35typedef int (*_libcglue_fdman_close_cb_t)(
void *userdata);
36typedef int (*_libcglue_fdman_read_cb_t)(
void *userdata,
void *buf,
int nbytes);
37typedef int (*_libcglue_fdman_lseek_cb_t)(
void *userdata,
int offset,
int whence);
38typedef int64_t (*_libcglue_fdman_lseek64_cb_t)(
void *userdata, int64_t offset,
int whence);
39typedef int (*_libcglue_fdman_write_cb_t)(
void *userdata,
const void *buf,
int nbytes);
40typedef int (*_libcglue_fdman_ioctl_cb_t)(
void *userdata,
int request,
void *data);
41typedef int (*_libcglue_fdman_ioctl2_cb_t)(
void *userdata,
int request,
void *arg,
unsigned int arglen,
void *buf,
unsigned int buflen);
42typedef int (*_libcglue_fdman_dread_cb_t)(
void *userdata,
struct dirent *dir);
43typedef int (*_libcglue_fdman_fcntl_f_setfl_cb_t)(
void *userdata,
int newfl);
45typedef int (*_libcglue_fdman_bind_cb_t)(
void *userdata,
const struct sockaddr *my_addr, socklen_t addrlen);
46typedef int (*_libcglue_fdman_connect_cb_t)(
void *userdata,
const struct sockaddr *serv_addr, socklen_t addrlen);
47typedef int (*_libcglue_fdman_listen_cb_t)(
void *userdata,
int backlog);
48typedef ssize_t (*_libcglue_fdman_recv_cb_t)(
void *userdata,
void *buf,
size_t len,
int flags);
49typedef ssize_t (*_libcglue_fdman_recvfrom_cb_t)(
void *userdata,
void *buf,
size_t len,
int flags,
struct sockaddr *from, socklen_t *fromlen);
50typedef ssize_t (*_libcglue_fdman_recvmsg_cb_t)(
void *userdata,
struct msghdr *msg,
int flags);
51typedef ssize_t (*_libcglue_fdman_send_cb_t)(
void *userdata,
const void *buf,
size_t len,
int flags);
52typedef ssize_t (*_libcglue_fdman_sendto_cb_t)(
void *userdata,
const void *buf,
size_t len,
int flags,
const struct sockaddr *to, socklen_t tolen);
53typedef ssize_t (*_libcglue_fdman_sendmsg_cb_t)(
void *userdata,
const struct msghdr *msg,
int flags);
54typedef int (*_libcglue_fdman_getsockopt_cb_t)(
void *userdata,
int level,
int optname,
void *optval, socklen_t *optlen);
55typedef int (*_libcglue_fdman_setsockopt_cb_t)(
void *userdata,
int level,
int optname,
const void *optval, socklen_t optlen);
56typedef int (*_libcglue_fdman_shutdown_cb_t)(
void *userdata,
int how);
57typedef int (*_libcglue_fdman_getpeername_cb_t)(
void *userdata,
struct sockaddr *name, socklen_t *namelen);
58typedef int (*_libcglue_fdman_getsockname_cb_t)(
void *userdata,
struct sockaddr *name, socklen_t *namelen);
62 _libcglue_fdman_getfd_cb_t getfd;
63 _libcglue_fdman_getfilename_cb_t getfilename;
64 _libcglue_fdman_close_cb_t close;
65 _libcglue_fdman_read_cb_t read;
66 _libcglue_fdman_lseek_cb_t lseek;
67 _libcglue_fdman_lseek64_cb_t lseek64;
68 _libcglue_fdman_write_cb_t write;
69 _libcglue_fdman_ioctl_cb_t ioctl;
70 _libcglue_fdman_ioctl2_cb_t ioctl2;
71 _libcglue_fdman_dread_cb_t dread;
72 _libcglue_fdman_fcntl_f_setfl_cb_t fcntl_f_setfl;
73 _libcglue_fdman_accept_cb_t accept;
74 _libcglue_fdman_bind_cb_t bind;
75 _libcglue_fdman_connect_cb_t connect;
76 _libcglue_fdman_listen_cb_t listen;
77 _libcglue_fdman_recv_cb_t recv;
78 _libcglue_fdman_recvfrom_cb_t recvfrom;
79 _libcglue_fdman_recvmsg_cb_t recvmsg;
80 _libcglue_fdman_send_cb_t send;
81 _libcglue_fdman_sendto_cb_t sendto;
82 _libcglue_fdman_sendmsg_cb_t sendmsg;
83 _libcglue_fdman_getsockopt_cb_t getsockopt;
84 _libcglue_fdman_setsockopt_cb_t setsockopt;
85 _libcglue_fdman_shutdown_cb_t shutdown;
86 _libcglue_fdman_getpeername_cb_t getpeername;
87 _libcglue_fdman_getsockname_cb_t getsockname;
88} _libcglue_fdman_fd_ops_t;
93 _libcglue_fdman_fd_ops_t *ops;
94} _libcglue_fdman_fd_info_t;
96typedef int (*_libcglue_fdman_open_cb_t)(_libcglue_fdman_fd_info_t *info,
const char *buf,
int flags, mode_t mode);
97typedef int (*_libcglue_fdman_remove_cb_t)(
const char *path);
98typedef int (*_libcglue_fdman_rename_cb_t)(
const char *old,
const char *new_);
99typedef int (*_libcglue_fdman_mkdir_cb_t)(
const char *path,
int mode);
100typedef int (*_libcglue_fdman_rmdir_cb_t)(
const char *path);
101typedef int (*_libcglue_fdman_stat_cb_t)(
const char *path,
struct stat *buf);
102typedef int (*_libcglue_fdman_readlink_cb_t)(
const char *path,
char *buf,
size_t bufsiz);
103typedef int (*_libcglue_fdman_symlink_cb_t)(
const char *target,
const char *linkpath);
107 _libcglue_fdman_open_cb_t open;
108 _libcglue_fdman_remove_cb_t remove;
109 _libcglue_fdman_rename_cb_t rename;
110 _libcglue_fdman_mkdir_cb_t mkdir;
111 _libcglue_fdman_rmdir_cb_t rmdir;
112 _libcglue_fdman_stat_cb_t stat;
113 _libcglue_fdman_readlink_cb_t readlink;
114 _libcglue_fdman_symlink_cb_t symlink;
115} _libcglue_fdman_path_ops_t;
117extern _libcglue_fdman_path_ops_t *_libcglue_fdman_path_ops;
145#ifndef T_IP_INFO_DEFINED
146#define T_IP_INFO_DEFINED
159typedef int (*_libcglue_fdman_setconfig_cb_t)(
const t_ip_info *ip_info);
160typedef int (*_libcglue_fdman_getconfig_cb_t)(
char *netif_name,
t_ip_info *ip_info);
161typedef void (*_libcglue_fdman_dns_setserver_cb_t)(u8 numdns,
const ip_addr_t *dnsserver);
162typedef const ip_addr_t *(*_libcglue_fdman_dns_getserver_cb_t)(u8 numdns);
163typedef int (*_libcglue_fdman_socket_cb_t)(_libcglue_fdman_fd_info_t *info,
int domain,
int type,
int protocol);
164typedef int (*_libcglue_fdman_select_cb_t)(
int n,
fd_set *readfds,
fd_set *writefds,
fd_set *exceptfds,
struct timeval *timeout);
181typedef struct hostent *(*_libcglue_fdman_gethostbyaddr_cb_t)(
const void *addr,
int len,
int type);
182typedef struct hostent *(*_libcglue_fdman_gethostbyname_cb_t)(
const char *name);
183typedef int (*_libcglue_fdman_gethostbyname_r_cb_t)(
const char *name,
struct hostent *ret,
char *buf,
size_t buflen,
struct hostent **result,
int *h_errnop);
184typedef void (*_libcglue_fdman_freeaddrinfo_cb_t)(
struct addrinfo *ai);
185typedef int (*_libcglue_fdman_getaddrinfo_cb_t)(
const char *nodename,
const char *servname,
const struct addrinfo *hints,
struct addrinfo **res);
189 _libcglue_fdman_setconfig_cb_t setconfig;
190 _libcglue_fdman_getconfig_cb_t getconfig;
191 _libcglue_fdman_dns_setserver_cb_t dns_setserver;
192 _libcglue_fdman_dns_getserver_cb_t dns_getserver;
193 _libcglue_fdman_socket_cb_t socket;
194 _libcglue_fdman_select_cb_t select;
195 _libcglue_fdman_gethostbyaddr_cb_t gethostbyaddr;
196 _libcglue_fdman_gethostbyname_cb_t gethostbyname;
197 _libcglue_fdman_gethostbyname_r_cb_t gethostbyname_r;
198 _libcglue_fdman_freeaddrinfo_cb_t freeaddrinfo;
199 _libcglue_fdman_getaddrinfo_cb_t getaddrinfo;
200} _libcglue_fdman_socket_ops_t;
202extern _libcglue_fdman_socket_ops_t *_libcglue_fdman_socket_ops;
204typedef u32 (*_libcglue_fdman_inet_addr_cb_t)(
const char *cp);
205typedef char *(*_libcglue_fdman_inet_ntoa_cb_t)(
const ip4_addr_t *addr);
206typedef char *(*_libcglue_fdman_inet_ntoa_r_cb_t)(
const ip4_addr_t *addr,
char *buf,
int buflen);
207typedef int (*_libcglue_fdman_inet_aton_cb_t)(
const char *cp,
ip4_addr_t *addr);
211 _libcglue_fdman_inet_addr_cb_t inet_addr;
212 _libcglue_fdman_inet_ntoa_cb_t inet_ntoa;
213 _libcglue_fdman_inet_ntoa_r_cb_t inet_ntoa_r;
214 _libcglue_fdman_inet_aton_cb_t inet_aton;
215} _libcglue_fdman_inet_ops_t;
217extern _libcglue_fdman_inet_ops_t *_libcglue_fdman_inet_ops;
220extern char __cwd[MAXNAMLEN + 1];
221extern int __path_absolute(
const char *in,
char *out,
int len);
223#define PS2_CLOCKS_PER_SEC kBUSCLKBY256
224#define PS2_CLOCKS_PER_MSEC (PS2_CLOCKS_PER_SEC / 1000)
227#define PS2_DISABLE_AUTOSTART_PTHREAD() \
228 void __libpthreadglue_init() {} \
229 void __libpthreadglue_deinit() {}
232#define LIBCGLUE_SUPPORT_NAMCO_SYSTEM_2x6() \
233 void _libcglue_rtc_update() {}
235typedef uint64_t ps2_clock_t;
236static inline ps2_clock_t ps2_clock(
void) {
241extern s64 _ps2sdk_rtc_offset_from_busclk;
242s64 _libcglue_rtc_get_offset_from_busclk(
void);
243extern void _libcglue_rtc_update_impl();
244extern void _libcglue_rtc_update();
248typedef int64_t off64_t;
249extern off64_t lseek64(
int fd, off64_t offset,
int whence);
252extern void _libcglue_timezone_update_impl();
253extern void _libcglue_timezone_update();
255extern void ps2sdk_setTimezone(
int timezone);
256extern void ps2sdk_setDaylightSaving(
int daylightSaving);
258extern _libcglue_fdman_fd_info_t *libcglue_get_fd_info(
int fd);
259extern int __libcglue_init_stdio(_libcglue_fdman_fd_info_t *info,
int fd);
264extern int ps2sdk_get_iop_fd(
int fd);
265extern char *ps2sdk_get_iop_filename(
int fd);
266extern int _ps2sdk_close(
int fd);
267extern int _ps2sdk_dclose(
int fd);
268extern int _ps2sdk_read(
int fd,
void *buf,
int nbytes);
269extern int _ps2sdk_lseek(
int fd,
int offset,
int whence);
270extern int64_t _ps2sdk_lseek64(
int fd, int64_t offset,
int whence);
271extern int _ps2sdk_write(
int fd,
const void *buf,
int nbytes);
272extern int _ps2sdk_ioctl(
int fd,
int request,
void *data);
273extern int _ps2sdk_ioctl2(
int fd,
int request,
void *arg,
unsigned int arglen,
void *buf,
unsigned int buflen);
274extern int _ps2sdk_dread(
int fd,
struct dirent *dir);
struct ip4_addr ip4_addr_t
u64 GetTimerSystemTime(void)