os: xtrans: let Writev() methods accept just one buffer instead of iovec

Since they're only called with a one-element iovec, we can use a single
buffer pointer straight away, thus making it quite the same as the old
Write() methods.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult
2025-07-30 20:41:10 +02:00
committed by Enrico Weigelt
parent a905a3921b
commit c079ad54fb
4 changed files with 15 additions and 14 deletions

View File

@@ -707,7 +707,7 @@ int _XSERVTransRead (XtransConnInfo ciptr, char *buf, int size)
ssize_t _XSERVTransWrite (XtransConnInfo ciptr, const char *buf, size_t size)
{
return ciptr->transptr->Write (ciptr, buf, size);
return ciptr->transptr->Writev (ciptr, buf, size);
}
#if XTRANS_SEND_FDS

View File

@@ -187,7 +187,7 @@ typedef struct _Xtransport {
size_t /* size */
);
ssize_t (*Writev)(XtransConnInfo ciptr, struct iovec *iov, size_t iovcnt);
ssize_t (*Writev)(XtransConnInfo ciptr, const char *buf, size_t size);
#if XTRANS_SEND_FDS
int (*SendFd)(

View File

@@ -761,11 +761,11 @@ static ssize_t _XSERVTransLocalWrite(XtransConnInfo ciptr, const char *buf, size
return write(ciptr->fd,buf,size);
}
static ssize_t _XSERVTransLocalWritev(XtransConnInfo ciptr, struct iovec *iov, size_t iovcnt)
static ssize_t _XSERVTransLocalWritev(XtransConnInfo ciptr, const char *buf, size_t size)
{
prmsg(2,"LocalWritev(%d,%p,%d)\n", ciptr->fd, (const void *) iov, iovcnt);
return _XSERVTransWriteV(ciptr,iov,iovcnt);
return write(ciptr->fd,buf,size);
}
static int _XSERVTransLocalDisconnect(XtransConnInfo ciptr)

View File

@@ -1338,9 +1338,14 @@ static int _XSERVTransSocketRead (
}
static ssize_t _XSERVTransSocketWritev (
XtransConnInfo ciptr, struct iovec *iov, size_t iovcnt)
XtransConnInfo ciptr, const char *buf, size_t size)
{
prmsg (2,"SocketWritev(%d,%p,%d)\n", ciptr->fd, (void *) iov, iovcnt);
prmsg (2,"SocketWritev(%d,%p,%ld)\n", ciptr->fd, (void *) buf, (unsigned long)size);
struct iovec iov = {
.iov_len = size,
.iov_base = (char*)buf,
};
#if XTRANS_SEND_FDS
if (ciptr->send_fds)
@@ -1351,8 +1356,8 @@ static ssize_t _XSERVTransSocketWritev (
struct msghdr msg = {
.msg_name = NULL,
.msg_namelen = 0,
.msg_iov = iov,
.msg_iovlen = iovcnt,
.msg_iov = &iov,
.msg_iovlen = 1,
.msg_control = cmsgbuf.buf,
.msg_controllen = CMSG_LEN(nfd * sizeof(int))
};
@@ -1377,7 +1382,7 @@ static ssize_t _XSERVTransSocketWritev (
return i;
}
#endif
return _XSERVTransWriteV(ciptr, iov, iovcnt);
return _XSERVTransWriteV(ciptr, &iov, 1);
}
static ssize_t _XSERVTransSocketWrite (
@@ -1395,11 +1400,7 @@ static ssize_t _XSERVTransSocketWrite (
#if XTRANS_SEND_FDS
if (ciptr->send_fds)
{
struct iovec iov;
iov.iov_base = (void *) buf;
iov.iov_len = size;
return _XSERVTransSocketWritev(ciptr, &iov, 1);
return _XSERVTransSocketWritev(ciptr, buf, size);
}
#endif /* XTRANS_SEND_FDS */
return write (ciptr->fd, buf, size);