[stgt] [RFC 00/14] tgt BSD build support
FUJITA Tomonori
fujita.tomonori at lab.ntt.co.jp
Tue Feb 24 20:18:53 CET 2009
On Tue, 24 Feb 2009 11:45:35 +0200
Boaz Harrosh <bharrosh at panasas.com> wrote:
> FUJITA Tomonori wrote:
> > On Mon, 23 Feb 2009 19:41:46 +0200
> > Boaz Harrosh <bharrosh at panasas.com> wrote:
> >
> >> Please tell me if you are at all interested in these patches or I should
> >> keep them out-of-tree at open-osd.org.
> >
> > I think that it's a good idea to support other operating systems
> > though I don't care about them; we could get more users and it would
> > improve tgt.
>
> Thanks.
>
> >
> > I have some technical issues over your patchset (e.g. I will not add
> > ifdef to *.c files) but I think that we can solve them.
> >
>
> The setsockopt() and syscall() can be over-ridden an #ifdef can be avoided
> but there are a couple of places, like an extra field member in
> struct sockaddr, or the naming convention of an IPC, where it is very
> hard to avoid.
Hmm, why can't you do something like this?
I think that you can avoid all the ifdef in your patch like this.
diff --git a/usr/Makefile b/usr/Makefile
index f76cac2..9a55ee2 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -1,9 +1,15 @@
VERSION = 0.9.4
EXTRAVERSION = $(if $(shell git-show-ref 2>/dev/null),-git-$(shell git-show-ref --head --abbrev|head -1|awk '{print $$1}'))
+UNAME ?= $(shell uname)
+
mandir = /usr/share/man
docdir = /usr/share/doc/tgt
+ifeq ($(UNAME),Linux)
+TGTD_OBJS += libos/linux.o
+endif
+
ifneq ($(IBMVIO),)
CFLAGS += -DIBMVIO -DUSE_KERNEL
TGTD_OBJS += $(addprefix ibmvio/, ibmvio.o)
diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c
index bfaec87..6280bdb 100644
--- a/usr/iscsi/iscsid.c
+++ b/usr/iscsi/iscsid.c
@@ -39,6 +39,7 @@
#include "driver.h"
#include "scsi.h"
#include "crc32c.h"
+#include "libos.h"
#define MAX_QUEUE_CMD 128
@@ -767,9 +768,8 @@ static void text_scan_text(struct iscsi_connection *conn)
blen--;
}
- slen = sizeof(ss);
- getnameinfo((struct sockaddr *) &ss, slen, p, blen,
- NULL, 0, NI_NUMERICHOST);
+ do_getnameinfo((struct sockaddr *)&ss, p, blen,
+ NULL, 0, NI_NUMERICHOST);
p = buf + strlen(buf);
diff --git a/usr/libos.h b/usr/libos.h
new file mode 100644
index 0000000..ef585e2
--- /dev/null
+++ b/usr/libos.h
@@ -0,0 +1,8 @@
+#ifndef __LIBOS_H__
+#define __LIBOS_H__
+
+int do_getnameinfo(const struct sockaddr *sa, char *host, size_t hostlen,
+ char *serv, size_t servlen, int flags);
+
+#endif
+
diff --git a/usr/libos/bsd.c b/usr/libos/bsd.c
new file mode 100644
index 0000000..7f1c949
--- /dev/null
+++ b/usr/libos/bsd.c
@@ -0,0 +1,9 @@
+#include <sys/socket.h>
+#include <netdb.h>
+
+int do_getnameinfo(const struct sockaddr *sa, char *host, size_t hostlen,
+ char *serv, size_t servlen, int flags)
+{
+ socklen_t slen = sa->sa_len;
+ return getnameinfo(sa, slen, host, hostlen, serv, servlen, flags);
+}
diff --git a/usr/libos/linux.c b/usr/libos/linux.c
new file mode 100644
index 0000000..6cfa530
--- /dev/null
+++ b/usr/libos/linux.c
@@ -0,0 +1,9 @@
+#include <sys/socket.h>
+#include <netdb.h>
+
+int do_getnameinfo(const struct sockaddr *sa, char *host, size_t hostlen,
+ char *serv, size_t servlen, int flags)
+{
+ socklen_t slen = sizeof(*sa);
+ return getnameinfo(sa, slen, host, hostlen, serv, servlen, flags);
+}
--
1.5.6.5
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list