Delete unused methods in SharedFD
Test: make -j && launch_cvd
Change-Id: I9e786c0a928cf21549fe5c0d9fd49fef8eafbd8c
diff --git a/common/libs/fs/shared_fd.cpp b/common/libs/fs/shared_fd.cpp
index b85cf7c..f3fff8a 100644
--- a/common/libs/fs/shared_fd.cpp
+++ b/common/libs/fs/shared_fd.cpp
@@ -86,26 +86,6 @@
namespace cvd {
-bool FileInstance::CopyFrom(FileInstance& in) {
- std::vector<char> buffer(8192);
- while (true) {
- ssize_t num_read = in.Read(buffer.data(), buffer.size());
- if (!num_read) {
- return true;
- }
- if (num_read == -1) {
- return false;
- }
- if (num_read > 0) {
- if (Write(buffer.data(), num_read) != num_read) {
- // The caller will have to log an appropriate message.
- return false;
- }
- }
- }
- return true;
-}
-
bool FileInstance::CopyFrom(FileInstance& in, size_t length) {
std::vector<char> buffer(8192);
while (length > 0) {
@@ -143,16 +123,6 @@
fd_ = -1;
}
-void FileInstance::Identify(const char* identity) {
- std::stringstream identity_stream;
- identity_stream << "fd=" << fd_ << " @" << this << " is " << identity;
- identity_ = identity_stream.str();
- std::stringstream message;
- message << __FUNCTION__ << ": " << identity_;
- std::string message_str = message.str();
- Log(message_str.c_str());
-}
-
bool FileInstance::IsSet(fd_set* in) const {
if (IsOpen() && FD_ISSET(fd_, in)) {
return true;
@@ -232,23 +202,6 @@
*len = namelen + offsetof(struct sockaddr_un, sun_path) + 1;
}
-SharedFD SharedFD::SocketSeqPacketServer(const char* name, mode_t mode) {
- return SocketLocalServer(name, false, SOCK_SEQPACKET, mode);
-}
-
-SharedFD SharedFD::SocketSeqPacketClient(const char* name) {
- return SocketLocalClient(name, false, SOCK_SEQPACKET);
-}
-
-SharedFD SharedFD::TimerFD(int clock, int flags) {
- int fd = timerfd_create(clock, flags);
- if (fd == -1) {
- return SharedFD(std::shared_ptr<FileInstance>(new FileInstance(fd, errno)));
- } else {
- return SharedFD(std::shared_ptr<FileInstance>(new FileInstance(fd, 0)));
- }
-}
-
SharedFD SharedFD::Accept(const FileInstance& listener, struct sockaddr* addr,
socklen_t* addrlen) {
return SharedFD(
@@ -281,11 +234,6 @@
return std::shared_ptr<FileInstance>(new FileInstance(fd, errno));
}
-SharedFD SharedFD::Epoll(int flags) {
- int fd = epoll_create1(flags);
- return std::shared_ptr<FileInstance>(new FileInstance(fd, errno));
-}
-
SharedFD SharedFD::MemfdCreate(const char* name, unsigned int flags) {
int fd = memfd_create_wrapper(name, flags);
int error_num = errno;
diff --git a/common/libs/fs/shared_fd.h b/common/libs/fs/shared_fd.h
index 044c7cc..ef37d1f 100644
--- a/common/libs/fs/shared_fd.h
+++ b/common/libs/fs/shared_fd.h
@@ -66,26 +66,6 @@
class FileInstance;
/**
- * Describes the fields in msghdr that are honored by the *MsgAndFDs
- * calls.
- */
-struct InbandMessageHeader {
- void* msg_name;
- socklen_t msg_namelen;
- struct iovec* msg_iov;
- size_t msg_iovlen;
- int msg_flags;
-
- void Convert(struct msghdr* dest) const {
- dest->msg_name = msg_name;
- dest->msg_namelen = msg_namelen;
- dest->msg_iov = msg_iov;
- dest->msg_iovlen = msg_iovlen;
- dest->msg_flags = msg_flags;
- }
-};
-
-/**
* Counted reference to a FileInstance.
*
* This is also the place where most new FileInstances are created. The creation
@@ -137,14 +117,12 @@
socklen_t* addrlen);
static SharedFD Accept(const FileInstance& listener);
static SharedFD Dup(int unmanaged_fd);
- static SharedFD GetControlSocket(const char* name);
// All SharedFDs have the O_CLOEXEC flag after creation. To remove use the
// Fcntl or Dup functions.
static SharedFD Open(const char* pathname, int flags, mode_t mode = 0);
static SharedFD Creat(const char* pathname, mode_t mode);
static bool Pipe(SharedFD* fd0, SharedFD* fd1);
static SharedFD Event(int initval = 0, int flags = 0);
- static SharedFD Epoll(int flags = 0);
static SharedFD MemfdCreate(const char* name, unsigned int flags = 0);
static bool SocketPair(int domain, int type, int protocol, SharedFD* fd0,
SharedFD* fd1);
@@ -155,12 +133,9 @@
static SharedFD SocketLocalServer(const char* name, bool is_abstract,
int in_type, mode_t mode);
static SharedFD SocketLocalServer(int port, int type);
- static SharedFD SocketSeqPacketServer(const char* name, mode_t mode);
- static SharedFD SocketSeqPacketClient(const char* name);
static SharedFD VsockServer(unsigned int port, int type);
static SharedFD VsockServer(int type);
static SharedFD VsockClient(unsigned int cid, unsigned int port, int type);
- static SharedFD TimerFD(int clock, int flags);
bool operator==(const SharedFD& rhs) const { return value_ == rhs.value_; }
@@ -231,7 +206,6 @@
// Otherwise an error will be set either on this file or the input.
// The non-const reference is needed to avoid binding this to a particular
// reference type.
- bool CopyFrom(FileInstance& in);
bool CopyFrom(FileInstance& in, size_t length);
int UNMANAGED_Dup() {
@@ -248,27 +222,6 @@
return rval;
}
- int EpollCtl(int op, cvd::SharedFD new_fd, struct epoll_event* event) {
- errno = 0;
- int rval = TEMP_FAILURE_RETRY(epoll_ctl(fd_, op, new_fd->fd_, event));
- errno_ = errno;
- return rval;
- }
-
- int EpollWait(struct epoll_event* events, int maxevents, int timeout) {
- errno = 0;
- int rval = TEMP_FAILURE_RETRY(epoll_wait(fd_, events, maxevents, timeout));
- errno_ = errno;
- return rval;
- }
-
- int Fchown(uid_t owner, gid_t group) {
- errno = 0;
- int rval = TEMP_FAILURE_RETRY(fchown(fd_, owner, group));
- errno_ = errno;
- return rval;
- }
-
int Fcntl(int command, int value) {
errno = 0;
int rval = TEMP_FAILURE_RETRY(fcntl(fd_, command, value));
@@ -276,24 +229,8 @@
return rval;
}
- int Fstat(struct stat* buf) {
- errno = 0;
- int rval = TEMP_FAILURE_RETRY(fstat(fd_, buf));
- errno_ = errno;
- return rval;
- }
-
int GetErrno() const { return errno_; }
- int GetSockOpt(int level, int optname, void* optval, socklen_t* optlen) {
- errno = 0;
- int rval = getsockopt(fd_, level, optname, optval, optlen);
- if (rval == -1) {
- errno_ = errno;
- }
- return rval;
- }
-
int GetSockName(struct sockaddr* addr, socklen_t* addrlen) {
errno = 0;
int rval = TEMP_FAILURE_RETRY(getsockname(fd_, addr, addrlen));
@@ -310,8 +247,6 @@
return vm_socket.svm_port;
}
- void Identify(const char* identity);
-
int Ioctl(int request, void* val = nullptr) {
errno = 0;
int rval = TEMP_FAILURE_RETRY(ioctl(fd_, request, val));
@@ -340,20 +275,6 @@
return rval;
}
- void* Mmap(void* addr, size_t length, int prot, int flags, off_t offset) {
- errno = 0;
- void* rval = mmap(addr, length, prot, flags, fd_, offset);
- errno_ = errno;
- return rval;
- }
-
- ssize_t Pread(void* buf, size_t count, off_t offset) {
- errno = 0;
- ssize_t rval = TEMP_FAILURE_RETRY(pread(fd_, buf, count, offset));
- errno_ = errno;
- return rval;
- }
-
ssize_t Recv(void* buf, size_t len, int flags) {
errno = 0;
ssize_t rval = TEMP_FAILURE_RETRY(recv(fd_, buf, len, flags));
@@ -361,15 +282,6 @@
return rval;
}
- ssize_t RecvFrom(void* buf, size_t len, int flags, struct sockaddr* src_addr,
- socklen_t* addr_len) {
- errno = 0;
- ssize_t rval =
- TEMP_FAILURE_RETRY(recvfrom(fd_, buf, len, flags, src_addr, addr_len));
- errno_ = errno;
- return rval;
- }
-
ssize_t RecvMsg(struct msghdr* msg, int flags) {
errno = 0;
ssize_t rval = TEMP_FAILURE_RETRY(recvmsg(fd_, msg, flags));
@@ -377,36 +289,6 @@
return rval;
}
- template <size_t SZ>
- ssize_t RecvMsgAndFDs(const struct InbandMessageHeader& msg_in, int flags,
- SharedFD (*new_fds)[SZ]) {
- // We need to make some modifications to land the fds. Make it clear
- // that there are no updates to the msg being passed in during this call.
- struct msghdr msg;
- msg_in.Convert(&msg);
- union {
- char buffer[CMSG_SPACE(SZ * sizeof(int))];
- struct cmsghdr this_aligns_buffer;
- } u;
- msg.msg_control = u.buffer;
- msg.msg_controllen = sizeof(u.buffer);
-
- cmsghdr* cmsg = CMSG_FIRSTHDR(&msg);
- cmsg->cmsg_len = CMSG_LEN(SZ * sizeof(int));
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- int* fd_array = reinterpret_cast<int*>(CMSG_DATA(cmsg));
- for (size_t i = 0; i < SZ; ++i) {
- fd_array[i] = -1;
- }
- ssize_t rval = RecvMsg(&msg, flags);
- for (size_t i = 0; i < SZ; ++i) {
- (*new_fds)[i] =
- std::shared_ptr<FileInstance>(new FileInstance(fd_array[i], errno));
- }
- return rval;
- }
-
ssize_t Read(void* buf, size_t count) {
errno = 0;
ssize_t rval = TEMP_FAILURE_RETRY(read(fd_, buf, count));
@@ -428,29 +310,6 @@
return rval;
}
- template <size_t SZ>
- ssize_t SendMsgAndFDs(const struct InbandMessageHeader& msg_in, int flags,
- const SharedFD (&fds)[SZ]) {
- struct msghdr msg;
- msg_in.Convert(&msg);
- union {
- char buffer[CMSG_SPACE(SZ * sizeof(int))];
- struct cmsghdr this_aligns_buffer;
- } u;
- msg.msg_control = u.buffer;
- msg.msg_controllen = sizeof(u.buffer);
-
- cmsghdr* cmsg = CMSG_FIRSTHDR(&msg);
- cmsg->cmsg_len = CMSG_LEN(SZ * sizeof(int));
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- int* fd_array = reinterpret_cast<int*>(CMSG_DATA(cmsg));
- for (size_t i = 0; i < SZ; ++i) {
- fd_array[i] = fds[i]->fd_;
- }
- return SendMsg(&msg, flags);
- }
-
int Shutdown(int how) {
errno = 0;
int rval = shutdown(fd_, how);
@@ -458,15 +317,6 @@
return rval;
}
- ssize_t SendTo(const void* buf, size_t len, int flags,
- const struct sockaddr* dest_addr, socklen_t addrlen) {
- errno = 0;
- ssize_t rval =
- TEMP_FAILURE_RETRY(sendto(fd_, buf, len, flags, dest_addr, addrlen));
- errno_ = errno;
- return rval;
- }
-
void Set(fd_set* dest, int* max_index) const;
int SetSockOpt(int level, int optname, const void* optval, socklen_t optlen) {
@@ -492,21 +342,6 @@
return strerror_buf_;
}
- int TimerGet(struct itimerspec* curr_value) {
- errno = 0;
- int rval = timerfd_gettime(fd_, curr_value);
- errno_ = errno;
- return rval;
- }
-
- int TimerSet(int flags, const struct itimerspec* new_value,
- struct itimerspec* old_value) {
- errno = 0;
- int rval = timerfd_settime(fd_, flags, new_value, old_value);
- errno_ = errno;
- return rval;
- }
-
ssize_t Truncate(off_t length) {
errno = 0;
ssize_t rval = TEMP_FAILURE_RETRY(ftruncate(fd_, length));
@@ -521,13 +356,6 @@
return rval;
}
- ssize_t WriteV(struct iovec* iov, int iovcount) {
- errno = 0;
- ssize_t rval = TEMP_FAILURE_RETRY(writev(fd_, iov, iovcount));
- errno_ = errno;
- return rval;
- }
-
private:
FileInstance(int fd, int in_errno) : fd_(fd), errno_(in_errno) {
// Ensure every file descriptor managed by a FileInstance has the CLOEXEC
diff --git a/common/libs/fs/shared_fd_test.cpp b/common/libs/fs/shared_fd_test.cpp
index 3423619..7ca6204 100644
--- a/common/libs/fs/shared_fd_test.cpp
+++ b/common/libs/fs/shared_fd_test.cpp
@@ -23,48 +23,17 @@
#include <string>
-using cvd::InbandMessageHeader;
using cvd::SharedFD;
-char hello[] = "Hello, world!";
char pipe_message[] = "Testing the pipe";
TEST(SendFD, Basic) {
- char dirname[] = "/tmp/sfdtestXXXXXX";
- char* socket = mkdtemp(dirname);
- EXPECT_TRUE(socket != NULL);
- std::string path(dirname);
- path += "/s";
- SharedFD server = SharedFD::SocketSeqPacketServer(path.c_str(), 0700);
- EXPECT_TRUE(server->IsOpen());
- int rval = fork();
- EXPECT_NE(-1, rval);
- if (!rval) {
- struct iovec iov { hello, sizeof(hello) };
- SharedFD client = SharedFD::SocketSeqPacketClient(path.c_str());
- InbandMessageHeader hdr{};
- hdr.msg_iov = &iov;
- hdr.msg_iovlen = 1;
- SharedFD fds[2];
- SharedFD::Pipe(fds, fds + 1);
- ssize_t rval = client->SendMsgAndFDs(hdr, 0, fds);
- printf("SendMsg sent %zd (%s)\n", rval, client->StrError());
- exit(0);
- }
- server->Listen(2);
- SharedFD peer = SharedFD::Accept(*server);
- EXPECT_TRUE(peer->IsOpen());
- char buf[80];
- struct iovec iov { buf, sizeof(buf) };
- InbandMessageHeader hdr{};
- hdr.msg_iov = &iov;
- hdr.msg_iovlen = 1;
SharedFD fds[2];
- peer->RecvMsgAndFDs(hdr, 0, &fds);
- EXPECT_EQ(0, strcmp(buf, hello));
+ SharedFD::Pipe(fds, fds + 1);
EXPECT_TRUE(fds[0]->IsOpen());
EXPECT_TRUE(fds[1]->IsOpen());
EXPECT_EQ(sizeof(pipe_message), fds[1]->Write(pipe_message, sizeof(pipe_message)));
+ char buf[80];
EXPECT_EQ(sizeof(pipe_message), fds[0]->Read(buf, sizeof(buf)));
EXPECT_EQ(0, strcmp(buf, pipe_message));
}