summary refs log tree commit diff
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2018-01-09 15:01:36 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-01-10 15:44:31 -0800
commit20bb5976367883b43d5d07c2bcc33d68dab25cd7 (patch)
treea67e38df4ed7db5b8320277a84391a0032db19b6
parent3b1d8a577313891da7d904ce66b6cb03453cccac (diff)
downloadcrosvm-20bb5976367883b43d5d07c2bcc33d68dab25cd7.tar
crosvm-20bb5976367883b43d5d07c2bcc33d68dab25cd7.tar.gz
crosvm-20bb5976367883b43d5d07c2bcc33d68dab25cd7.tar.bz2
crosvm-20bb5976367883b43d5d07c2bcc33d68dab25cd7.tar.lz
crosvm-20bb5976367883b43d5d07c2bcc33d68dab25cd7.tar.xz
crosvm-20bb5976367883b43d5d07c2bcc33d68dab25cd7.tar.zst
crosvm-20bb5976367883b43d5d07c2bcc33d68dab25cd7.zip
sys_util: implement FromRawFd for EventFd
This is used to make EventFd passed over unix domain socket, such as by
the plugin API.

TEST=./build_test
BUG=chromium:800626

Change-Id: Ifd6c81c51b31a376d57a007bf413a836f3af870a
Reviewed-on: https://chromium-review.googlesource.com/857906
Commit-Ready: Zach Reizner <zachr@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
-rw-r--r--sys_util/src/eventfd.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys_util/src/eventfd.rs b/sys_util/src/eventfd.rs
index 9298a05..ffdfadb 100644
--- a/sys_util/src/eventfd.rs
+++ b/sys_util/src/eventfd.rs
@@ -83,6 +83,14 @@ impl AsRawFd for EventFd {
     }
 }
 
+impl FromRawFd for EventFd {
+    unsafe fn from_raw_fd(fd: RawFd) -> Self {
+        EventFd {
+            eventfd: File::from_raw_fd(fd)
+        }
+    }
+}
+
 unsafe impl ::Pollable for EventFd {
     fn pollable_fd(&self) -> RawFd {
         self.eventfd.as_raw_fd()