Use the linux_connect() on alpha rather than passing directly through

to our native connect().  This is required to deal with the differences
in the way linux handles connects on non-blocking sockets.

This gets the private beta of the Compaq Linux/alpha JDK working
on FreeBSD/alpha

Approved by: marcel
This commit is contained in:
Andrew Gallatin 2000-11-16 01:05:53 +00:00
parent e652fd8417
commit 930a65fe47
2 changed files with 11 additions and 2 deletions

View file

@ -150,7 +150,8 @@
96 NOPROTO LINUX { int setpriority(int which, int who, int prio); }
97 STD LINUX { int osf1_socket(int domain, int type, \
int protocol); }
98 NOPROTO LINUX { int connect(int s, caddr_t name, int namelen); }
98 STD LINUX { int linux_connect(int s, caddr_t name, \
int namelen); }
99 NOPROTO LINUX { int oaccept(int s, caddr_t name, int *anamelen); } \
accept accept_args int
100 UNIMPL LINUX

View file

@ -343,8 +343,10 @@ struct linux_connect_args {
struct sockaddr * name;
int namelen;
};
int linux_connect(struct proc *, struct linux_connect_args *);
#endif /* !__alpha__*/
static int
int
linux_connect(struct proc *p, struct linux_connect_args *args)
{
struct linux_connect_args linux_args;
@ -355,8 +357,12 @@ linux_connect(struct proc *p, struct linux_connect_args *args)
} */ bsd_args;
int error;
#ifdef __alpha__
bcopy(args, &linux_args, sizeof(linux_args));
#else
if ((error = copyin(args, &linux_args, sizeof(linux_args))))
return (error);
#endif /* __alpha__ */
bsd_args.s = linux_args.s;
bsd_args.name = (caddr_t)linux_args.name;
@ -418,6 +424,8 @@ linux_connect(struct proc *p, struct linux_connect_args *args)
return (error);
}
#ifndef __alpha__
struct linux_listen_args {
int s;
int backlog;