summaryrefslogtreecommitdiff
path: root/rust-src/bch_bindgen/src/lib.rs
diff options
context:
space:
mode:
authorThomas Bertschinger <tahbertschinger@gmail.com>2024-01-15 23:41:02 -0700
committerKent Overstreet <kent.overstreet@linux.dev>2024-01-16 01:47:05 -0500
commitf5baaf48e3e82b1caf9f5cd1207d4d6feba3a2e5 (patch)
tree59f7b0e4667df7a9d3d5a45725f2aaab3e79b4c5 /rust-src/bch_bindgen/src/lib.rs
parentfb35dbfdc5a9446fbb856dae5542b23963e28b89 (diff)
move Rust sources to top level, C sources into c_src
This moves the Rust sources out of rust_src/ and into the top level. Running the bcachefs executable out of the development tree is now: $ ./target/release/bcachefs command or $ cargo run --profile release -- command instead of "./bcachefs command". Building and installing is still: $ make && make install Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'rust-src/bch_bindgen/src/lib.rs')
-rw-r--r--rust-src/bch_bindgen/src/lib.rs168
1 files changed, 0 insertions, 168 deletions
diff --git a/rust-src/bch_bindgen/src/lib.rs b/rust-src/bch_bindgen/src/lib.rs
deleted file mode 100644
index 4c549442..00000000
--- a/rust-src/bch_bindgen/src/lib.rs
+++ /dev/null
@@ -1,168 +0,0 @@
-pub mod bcachefs;
-pub mod btree;
-pub mod bkey;
-pub mod errcode;
-pub mod keyutils;
-pub mod rs;
-pub mod fs;
-pub mod opts;
-pub use paste::paste;
-
-pub mod c {
- pub use crate::bcachefs::*;
-}
-
-use c::bpos as Bpos;
-
-pub const fn spos(inode: u64, offset: u64, snapshot: u32) -> Bpos {
- Bpos { inode, offset, snapshot }
-}
-
-pub const fn pos(inode: u64, offset: u64) -> Bpos {
- spos(inode, offset, 0)
-}
-
-pub const POS_MIN: Bpos = spos(0, 0, 0);
-pub const POS_MAX: Bpos = spos(u64::MAX, u64::MAX, 0);
-pub const SPOS_MAX: Bpos = spos(u64::MAX, u64::MAX, u32::MAX);
-
-use std::cmp::Ordering;
-
-impl PartialEq for Bpos {
- fn eq(&self, other: &Self) -> bool {
- self.cmp(other) == Ordering::Equal
- }
-}
-
-impl Eq for Bpos {}
-
-impl PartialOrd for Bpos {
- fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- Some(self.cmp(other))
- }
-}
-
-impl Ord for Bpos {
- fn cmp(&self, other: &Self) -> Ordering {
- let l_inode = self.inode;
- let r_inode = other.inode;
- let l_offset = self.offset;
- let r_offset = other.offset;
- let l_snapshot = self.snapshot;
- let r_snapshot = other.snapshot;
-
- l_inode.cmp(&r_inode)
- .then(l_offset.cmp(&r_offset))
- .then(l_snapshot.cmp(&r_snapshot))
- }
-}
-
-use std::ffi::CStr;
-use std::fmt;
-
-impl fmt::Display for c::btree_id {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- let s = unsafe { CStr::from_ptr(c::bch2_btree_id_str(*self)) };
- let s = s.to_str().unwrap();
- write!(f, "{}", s)
- }
-}
-
-use std::str::FromStr;
-use std::ffi::CString;
-
-use std::error::Error;
-
-#[derive(Debug)]
-pub struct InvalidBtreeId;
-
-impl fmt::Display for InvalidBtreeId {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- write!(f, "invalid btree id")
- }
-}
-
-impl Error for InvalidBtreeId {
-}
-
-impl FromStr for c::btree_id {
- type Err = InvalidBtreeId;
-
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- let s = CString::new(s).unwrap();
- let p = s.as_ptr();
-
- let v = unsafe {c::match_string(c::__bch2_btree_ids[..].as_ptr(), (-(1 as isize)) as usize, p)};
- if v >= 0 {
- Ok(unsafe { std::mem::transmute(v) })
- } else {
- Err(InvalidBtreeId)
- }
- }
-}
-
-impl c::printbuf {
- fn new() -> c::printbuf {
- let mut buf: c::printbuf = Default::default();
-
- buf.set_heap_allocated(true);
- buf
- }
-}
-
-impl Drop for c::printbuf {
- fn drop(&mut self) {
- unsafe { c::bch2_printbuf_exit(self) }
- }
-}
-
-impl fmt::Display for Bpos {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- let mut buf = c::printbuf::new();
-
- unsafe { c::bch2_bpos_to_text(&mut buf, *self) };
-
- let s = unsafe { CStr::from_ptr(buf.buf) };
- let s = s.to_str().unwrap();
- write!(f, "{}", s)
- }
-}
-
-impl FromStr for c::bpos {
- type Err = InvalidBtreeId;
-
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- if s == "POS_MIN" {
- return Ok(POS_MIN);
- }
-
- if s == "POS_MAX" {
- return Ok(POS_MAX);
- }
-
- if s == "SPOS_MAX" {
- return Ok(SPOS_MAX);
- }
-
- let mut fields = s.split(':');
- let ino_str = fields.next().ok_or(InvalidBtreeId)?;
- let off_str = fields.next().ok_or(InvalidBtreeId)?;
- let snp_str = fields.next();
-
- let ino: u64 = ino_str.parse().map_err(|_| InvalidBtreeId)?;
- let off: u64 = off_str.parse().map_err(|_| InvalidBtreeId)?;
- let snp: u32 = snp_str.map(|s| s.parse().ok()).flatten().unwrap_or(0);
-
- Ok(c::bpos { inode: ino, offset: off, snapshot: snp })
- }
-}
-
-pub fn printbuf_to_formatter<F>(f: &mut fmt::Formatter<'_>, func: F) -> fmt::Result
- where F: Fn(*mut c::printbuf) {
- let mut buf = c::printbuf::new();
-
- func(&mut buf);
-
- let s = unsafe { CStr::from_ptr(buf.buf) };
- f.write_str(s.to_str().unwrap())
-}