Skip to content

Commit 9a34db0

Browse files
committed
aya: fix rustdoc warnings for StructOps link types
Replace define_link_wrapper! macro with manual link type definitions for StructOps. The macro generates docs referencing StructOps::attach, but struct_ops links come from StructOpsMap::attach() instead. This also removes the StructOps::detach() and StructOps::take_link() methods which were incorrect - struct_ops links are managed through the map, not the program type.
1 parent 2d3f51c commit 9a34db0

File tree

2 files changed

+62
-8
lines changed

2 files changed

+62
-8
lines changed

aya/src/programs/struct_ops.rs

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use aya_obj::{
77
use log::debug;
88

99
use crate::programs::{
10-
FdLink, FdLinkId, ProgramData, ProgramError, ProgramType, define_link_wrapper, load_program,
10+
FdLink, FdLinkId, Link, ProgramData, ProgramError, ProgramType, links::id_as_key, load_program,
1111
};
1212

1313
/// A program that implements a kernel struct_ops interface.
@@ -90,4 +90,64 @@ impl StructOps {
9090
}
9191
}
9292

93-
define_link_wrapper!(StructOpsLink, StructOpsLinkId, FdLink, FdLinkId, StructOps);
93+
/// The identifier for a [`StructOpsLink`].
94+
///
95+
/// This is returned by [`StructOpsMap::attach`](crate::maps::StructOpsMap::attach).
96+
#[derive(Debug, Hash, Eq, PartialEq)]
97+
pub struct StructOpsLinkId(FdLinkId);
98+
99+
/// The link used by [`StructOps`] programs.
100+
///
101+
/// This is created by [`StructOpsMap::attach`](crate::maps::StructOpsMap::attach)
102+
/// after the struct_ops map has been registered.
103+
#[derive(Debug)]
104+
pub struct StructOpsLink(Option<FdLink>);
105+
106+
#[allow(dead_code)]
107+
impl StructOpsLink {
108+
pub(crate) fn new(base: FdLink) -> StructOpsLink {
109+
StructOpsLink(Some(base))
110+
}
111+
112+
fn inner(&self) -> &FdLink {
113+
self.0.as_ref().unwrap()
114+
}
115+
116+
fn into_inner(mut self) -> FdLink {
117+
self.0.take().unwrap()
118+
}
119+
}
120+
121+
impl Drop for StructOpsLink {
122+
fn drop(&mut self) {
123+
if let Some(base) = self.0.take() {
124+
let _: Result<(), ProgramError> = base.detach();
125+
}
126+
}
127+
}
128+
129+
impl Link for StructOpsLink {
130+
type Id = StructOpsLinkId;
131+
132+
fn id(&self) -> Self::Id {
133+
StructOpsLinkId(self.0.as_ref().unwrap().id())
134+
}
135+
136+
fn detach(mut self) -> Result<(), ProgramError> {
137+
self.0.take().unwrap().detach()
138+
}
139+
}
140+
141+
id_as_key!(StructOpsLink, StructOpsLinkId);
142+
143+
impl From<FdLink> for StructOpsLink {
144+
fn from(b: FdLink) -> StructOpsLink {
145+
StructOpsLink(Some(b))
146+
}
147+
}
148+
149+
impl From<StructOpsLink> for FdLink {
150+
fn from(mut w: StructOpsLink) -> FdLink {
151+
w.0.take().unwrap()
152+
}
153+
}

xtask/public-api/aya.txt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6824,9 +6824,6 @@ pub const aya::programs::struct_ops::StructOps::PROGRAM_TYPE: aya::programs::Pro
68246824
pub fn aya::programs::struct_ops::StructOps::load(&mut self, struct_name: &str, btf: &aya_obj::btf::btf::Btf) -> core::result::Result<(), aya::programs::ProgramError>
68256825
pub fn aya::programs::struct_ops::StructOps::member_name(&self) -> &str
68266826
impl aya::programs::struct_ops::StructOps
6827-
pub fn aya::programs::struct_ops::StructOps::detach(&mut self, link_id: aya::programs::struct_ops::StructOpsLinkId) -> core::result::Result<(), aya::programs::ProgramError>
6828-
pub fn aya::programs::struct_ops::StructOps::take_link(&mut self, link_id: aya::programs::struct_ops::StructOpsLinkId) -> core::result::Result<aya::programs::struct_ops::StructOpsLink, aya::programs::ProgramError>
6829-
impl aya::programs::struct_ops::StructOps
68306827
pub fn aya::programs::struct_ops::StructOps::fd(&self) -> core::result::Result<&aya::programs::ProgramFd, aya::programs::ProgramError>
68316828
impl aya::programs::struct_ops::StructOps
68326829
pub fn aya::programs::struct_ops::StructOps::from_pin<P: core::convert::AsRef<std::path::Path>>(path: P) -> core::result::Result<Self, aya::programs::ProgramError>
@@ -10514,9 +10511,6 @@ pub const aya::programs::struct_ops::StructOps::PROGRAM_TYPE: aya::programs::Pro
1051410511
pub fn aya::programs::struct_ops::StructOps::load(&mut self, struct_name: &str, btf: &aya_obj::btf::btf::Btf) -> core::result::Result<(), aya::programs::ProgramError>
1051510512
pub fn aya::programs::struct_ops::StructOps::member_name(&self) -> &str
1051610513
impl aya::programs::struct_ops::StructOps
10517-
pub fn aya::programs::struct_ops::StructOps::detach(&mut self, link_id: aya::programs::struct_ops::StructOpsLinkId) -> core::result::Result<(), aya::programs::ProgramError>
10518-
pub fn aya::programs::struct_ops::StructOps::take_link(&mut self, link_id: aya::programs::struct_ops::StructOpsLinkId) -> core::result::Result<aya::programs::struct_ops::StructOpsLink, aya::programs::ProgramError>
10519-
impl aya::programs::struct_ops::StructOps
1052010514
pub fn aya::programs::struct_ops::StructOps::fd(&self) -> core::result::Result<&aya::programs::ProgramFd, aya::programs::ProgramError>
1052110515
impl aya::programs::struct_ops::StructOps
1052210516
pub fn aya::programs::struct_ops::StructOps::from_pin<P: core::convert::AsRef<std::path::Path>>(path: P) -> core::result::Result<Self, aya::programs::ProgramError>

0 commit comments

Comments
 (0)