Commit Graph

632 Commits (a6f4739b5b138e718632758cad266ee3cb7b1b65)

Author SHA1 Message Date
Kevin Ji b06ff40278 xtask: Generate new bindings 10 months ago
Tamir Duberstein 0a32dacd2f Appease clippy
```
  error: unnecessary structure name repetition
     --> aya/src/bpf.rs:198:57
      |
  198 |     pub fn btf(&mut self, btf: Option<&'a Btf>) -> &mut EbpfLoader<'a> {
      |                                                         ^^^^^^^^^^^^^^ help: use the applicable keyword: `Self`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self
  note: the lint level is defined here
     --> aya/src/lib.rs:42:5
      |
  42  |     clippy::use_self,
      |     ^^^^^^^^^^^^^^^^

  error: unnecessary structure name repetition
     --> aya/src/bpf.rs:222:54
      |
  222 |     pub fn allow_unsupported_maps(&mut self) -> &mut EbpfLoader<'a> {
      |                                                      ^^^^^^^^^^^^^^ help: use the applicable keyword: `Self`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self

  error: unnecessary structure name repetition
     --> aya/src/bpf.rs:243:69
      |
  243 |     pub fn map_pin_path<P: AsRef<Path>>(&mut self, path: P) -> &mut EbpfLoader<'a> {
      |                                                                     ^^^^^^^^^^^^^^ help: use the applicable keyword: `Self`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self

  error: unnecessary structure name repetition
     --> aya/src/bpf.rs:292:15
      |
  292 |     ) -> &mut EbpfLoader<'a> {
      |               ^^^^^^^^^^^^^^ help: use the applicable keyword: `Self`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self

  error: unnecessary structure name repetition
     --> aya/src/bpf.rs:313:73
      |
  313 |     pub fn set_max_entries(&mut self, name: &'a str, size: u32) -> &mut EbpfLoader<'a> {
      |                                                                         ^^^^^^^^^^^^^^ help: use the applicable keyword: `Self`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self

  error: unnecessary structure name repetition
     --> aya/src/bpf.rs:335:56
      |
  335 |     pub fn extension(&mut self, name: &'a str) -> &mut EbpfLoader<'a> {
      |                                                        ^^^^^^^^^^^^^^ help: use the applicable keyword: `Self`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self

  error: unnecessary structure name repetition
     --> aya/src/bpf.rs:353:75
      |
  353 |     pub fn verifier_log_level(&mut self, level: VerifierLogLevel) -> &mut EbpfLoader<'a> {
      |                                                                           ^^^^^^^^^^^^^^ help: use the applicable keyword: `Self`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self
```

See https://github.com/rust-lang/rust-clippy/pull/12386.
10 months ago
Dave Tucker 63d8d4d34b
Merge pull request #528 from dave-tucker/rename-all-the-things
Rename Bpf -> Ebpf across all crates for consistency
11 months ago
Daniel Mellado a4e68ebdbf aya: include license in crate workspace
This PR includes the licenses files in the crate workspace subdirectory.
Without this, they won't be showing on crates.io and would be giving out
errors on tooling such as rust2rpm.

Signed-off-by: Daniel Mellado <dmellado@redhat.com>
11 months ago
Michal Rostecki 57a69fe9d2 docs: Use `Ebpf` instead of `Bpf` 11 months ago
Michal Rostecki 110a76cb9a feat(aya): Provide a deprecated `BpfError` alias 11 months ago
Dave Tucker 8c79b71bd5 feat(aya): Rename Bpf to Ebpf
And BpfLoader to EbpfLoader.
This also adds type aliases to preserve the use of the old names, making
updating to a new Aya release less of a burden. These aliases are marked
as deprecated since we'll likely remove them in a later release.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker fd48c55466 feat(aya-obj)!: Rename BpfRelocationError -> EbpfRelocationError
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker cf3e2ca677 feat(aya-obj)!: Rename BpfSectionKind to EbpfSectionKind
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker 70ac91dc1e chore(aya-ebpf-bindings): Rename bpf -> ebpf
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Gary Guo 542306d295 Add `CgroupDevice::query`
This follows closely the existing `LircMode2::query`.
11 months ago
Tamir Duberstein e38eac6352 aya: appease new nightly clippy lints
```
  error: unnecessary qualification
     --> aya/src/maps/ring_buf.rs:434:22
      |
  434 |                 ptr: ptr::NonNull::new(ptr).ok_or(
      |                      ^^^^^^^^^^^^^^^^^
      |
  note: the lint level is defined here
     --> aya/src/lib.rs:72:5
      |
  72  |     unused_qualifications,
      |     ^^^^^^^^^^^^^^^^^^^^^
  help: remove the unnecessary path segments
      |
  434 -                 ptr: ptr::NonNull::new(ptr).ok_or(
  434 +                 ptr: NonNull::new(ptr).ok_or(
      |

  error: unnecessary qualification
     --> aya/src/maps/mod.rs:225:21
      |
  225 |     let mut limit = std::mem::MaybeUninit::<rlimit>::uninit();
      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      |
  help: remove the unnecessary path segments
      |
  225 -     let mut limit = std::mem::MaybeUninit::<rlimit>::uninit();
  225 +     let mut limit = mem::MaybeUninit::<rlimit>::uninit();
      |

  error: unnecessary qualification
     --> aya/src/programs/mod.rs:614:9
      |
  614 |         crate::obj::Program {
      |         ^^^^^^^^^^^^^^^^^^^
      |
  help: remove the unnecessary path segments
      |
  614 -         crate::obj::Program {
  614 +         obj::Program {
      |

  error: unnecessary qualification
     --> aya/src/util.rs:373:14
      |
  373 |     unsafe { std::slice::from_raw_parts(bpf_name.as_ptr() as
      *const _, length) }
      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
      |
  help: remove the unnecessary path segments
      |
  373 -     unsafe { std::slice::from_raw_parts(bpf_name.as_ptr() as
      *const _, length) }
  373 +     unsafe { slice::from_raw_parts(bpf_name.as_ptr() as *const _,
      length) }
      |

  error: unnecessary qualification
      --> aya/src/maps/mod.rs:1130:47
       |
  1130 |                     .copy_from_slice(unsafe {
       std::mem::transmute(TEST_NAME) });
       |                                               ^^^^^^^^^^^^^^^^^^^
       |
  note: the lint level is defined here
      --> aya/src/lib.rs:72:5
       |
  72   |     unused_qualifications,
       |     ^^^^^^^^^^^^^^^^^^^^^
  help: remove the unnecessary path segments
       |
  1130 -                     .copy_from_slice(unsafe {
       std::mem::transmute(TEST_NAME) });
  1130 +                     .copy_from_slice(unsafe {
       mem::transmute(TEST_NAME) });
       |
```
11 months ago
Dave Tucker 0e99fa0f34 Release aya-obj v0.1.0, aya v0.12.0, safety bump aya-log v0.2.0 11 months ago
Dave Tucker 13b1fc63ef chore: Don't use path deps in workspace
This moves the path dependencies back into the per-crate Cargo.toml.
It is required such that the release tooling can correctly calculate
which version constraints require changing when we perform a release.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker daa5a47310
Merge pull request #892 from dave-tucker/breaking-changes-v2
docs(aya): Document more breaking changes
11 months ago
Dave Tucker 2d9d7a1a0b docs(aya): Document more breaking changes
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker 12280a83f9 docs(aya): Add CHANGELOG
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker 281ac1ac02 docs: Document breaking changes
This provides a `BREAKING-CHANGES.md` that we can populate per-crate.
Doing so will allow us to pull this content into our changelog and
websites to make things easier for users.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker b3e7ef741c chore: Use the cargo workspace package table
This allows for inheritance of common fields from the workspace root.
The following fields have been made common:

- authors
- license
- repository
- homepage
- edition

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
11 months ago
Dave Tucker 770a95e077 chore: Appease clippy unused imports
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
12 months ago
Tamir Duberstein 963dd13219 Appease rustc dead_code lint
Some of these are legit, others are false positives. I've filed
https://github.com/rust-lang/rust/issues/120770 for the latter.
12 months ago
Σrebe - Romain GERARD c31cce4a36 fix(aya-sock-map): invalid transmute when calling fd
Corrent an invalid transmutation for sock_map.
fd is already a ref of MapFd, so transmuting &fd to &SockMapFd is
equivalent to transmuting &&SockMapFd into &SockMapFd which is buggy.
12 months ago
Alessandro Decina 2be705bfa0 aya/programs: reformat to please rustfmt 1 year ago
Alessandro Decina 9b4f87646d Reorder imports a bit 1 year ago
Alessandro Decina d570450a0c aya/programs: export some missing modules
Previously we were only re-exporting the program types from these, so
links and other pub types were not exported.
1 year ago
Alessandro Decina 0f6a734392 aya: perf_event: add inherit argument to attach() 1 year ago
Alessandro Decina 92b1947885 aya: add StackTraceMap::remove() 1 year ago
Tamir Duberstein 7022528f04
aya: appease new nightly clippy lints
```
  error: this call to `as_ref.map(...)` does nothing
     --> aya/src/bpf.rs:536:30
      |
  536 |                 let btf_fd = btf_fd.as_ref().map(Arc::clone);
      |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `btf_fd.clone()`
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref
  note: the lint level is defined here
     --> aya/src/lib.rs:41:5
      |
  41  |     clippy::all,
      |     ^^^^^^^^^^^
      = note: `#[deny(clippy::useless_asref)]` implied by `#[deny(clippy::all)]`

  error: could not compile `aya` (lib) due to 1 previous error
  warning: build failed, waiting for other jobs to finish...
  error: initializer for `thread_local` value can be made `const`
    --> aya/src/sys/fake.rs:14:61
     |
  14 |     pub(crate) static TEST_MMAP_RET: RefCell<*mut c_void> = RefCell::new(ptr::null_mut());
     |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `const { RefCell::new(ptr::null_mut()) }`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#thread_local_initializer_can_be_made_const
     = note: `#[deny(clippy::thread_local_initializer_can_be_made_const)]` implied by `#[deny(clippy::all)]`
```
1 year ago
Tamir Duberstein 7c1bfeffe8
aya: appease nightly lint
```
error: lint `unused_tuple_struct_fields` has been renamed to `dead_code`
  --> aya/src/lib.rs:74:5
   |
74 |     unused_tuple_struct_fields,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `dead_code`
   |
   = note: `-D renamed-and-removed-lints` implied by `-D warnings`
   = help: to override `-D warnings` add `#[allow(renamed_and_removed_lints)]`
```

See https://github.com/rust-lang/rust/commit/9fcf9c141068984ffcbb4cb00c.
1 year ago
Alessandro Decina 2257cbeccb tc: add SchedClassifier::attach_to_link
Similar to Xdp::attach_to_link, can be used to replace/upgrade the
program attached to a link.
1 year ago
Alessandro Decina b13645b13d tc: add SchedClassifierLink::attach_type() getter
The link already exposes priority() and handle(). Expose attach_type()
too.
1 year ago
Dave Tucker e9e2f48d4f aya: Fix ringbuf docs
doctests are not running in CI and therefore the didn't catch the
ringbuf docs failures. This commit fixes the issues in the examples.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
1 year ago
astoycos b1769678f4 aya/maps: pin for (async)perf_event_array
Implement pinning for perf_event_array and async_perf_event_array.
Additionally make the core MapData.pin method operate on a reference
rather than a mutable reference.

Signed-off-by: astoycos <astoycos@redhat.com>
1 year ago
Andrew Werner c06fcc3eda maps/ringbuf: make RingBuf: Send + Sync
There was no reason for them not to be -- the APIs all require mutable
references and hold onto mutable references, so there cannot be internal
concurrency. The !Send + !Sync came from the MMap, but not for any good
reason.
1 year ago
Adam Preuss 15faca8b2e aya: extracting program and map names with the same function 1 year ago
Adam Preuss 4d24d1cfe8 aya: add MapInfo struct following the same pattern as ProgramInfo
This makes the APIs for loading maps and programs more similar.
1 year ago
Adam Preuss 36420d9297 aya: support loading a map by fd
This adds support to loading maps by fd similarly to the way programs
can be loaded by fd.
1 year ago
Andrés Medina 68ba02002f aya: make KernelVersion::code public 1 year ago
Dave Tucker 8780a50be1 .github: Add markdownlint
This adds a linter to catch common markdown formatting errors.
The linter used is markdownlint-cli2 which is available on all platforms
and has an associated Github Action to automate these checks in CI.

Configuration is checked in at .markdownlint-cli2.yaml.

You may run the check locally using `markdownlint-cli2`.
Or you may install the extension for VSCode:
DavidAnson.vscode-markdownlint

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
1 year ago
dependabot[bot] c89b2d156d
build(deps): update async-io requirement from 1.3 to 2.0
Updates the requirements on [async-io](https://github.com/smol-rs/async-io) to permit the latest version.
- [Release notes](https://github.com/smol-rs/async-io/releases)
- [Changelog](https://github.com/smol-rs/async-io/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/async-io/compare/v1.3.0...v1.13.0)

---
updated-dependencies:
- dependency-name: async-io
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
Tuetuopay 984c08cbad aya: fix unused async-io dependency linter error
Not using the `dep:` syntax created a Cargo feature flag for async-io,
though this feature alone does nothing without the `async_std` or
`async_tokio` features.
1 year ago
Andrew Werner e2cf734490 aya: Implement RingBuf
This implements the userspace binding for RingBuf.

Instead of streaming the samples as heap buffers, the process_ring
function takes a callback to which we pass the event's byte region,
roughly following [libbpf]'s API design. This avoids a copy and allows
marking the consumer pointer in a timely manner.

[libbpf]: https://github.com/libbpf/libbpf/blob/master/src/ringbuf.c

Additionally, integration tests are added to demonstrate the usage
of the new APIs and to ensure that they work end-to-end.

Co-authored-by: William Findlay <william@williamfindlay.com>
Co-authored-by: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
1 year ago
William Findlay 4af9d1bd3e
aya: move mmap from perf_buffer.rs to sys/mod.rs
mmap() is needed for the ring buffer implementation, so move it to a common module
1 year ago
Andrew Werner b73c0a46f5
aya: impl From<obj::InvalidMapTypeError> for MapTypeError 1 year ago
Tamir Duberstein 8462b69716
maps: sort variants
Missed in 5e637071c1 due to merge skew
with 7b71c7e1cd.
1 year ago
Tamir Duberstein 715d49022e
Merge pull request #812 from tamird/redundant-cargo
Cargo.toml: remove redundant keys
1 year ago
Tamir Duberstein ae612a0a10
Merge pull request #813 from tamird/sort-variants
maps: sort variants
1 year ago
Tamir Duberstein 5cdd1baf29
aya: import types from std::ffi rather than libc 1 year ago
Tamir Duberstein 5e637071c1
maps: sort variants 1 year ago
Tamir Duberstein cc48523347
Cargo.toml: remove redundant keys
`default-features = false` is already in the root Cargo.toml.
1 year ago