aya-bpf-macros: More consistent flow

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
reviewable/pr711/r13
Dave Tucker 2 years ago
parent b638788226
commit 98498d18de

@ -12,6 +12,9 @@ pub(crate) struct CgroupSock {
impl CgroupSock { impl CgroupSock {
pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result<CgroupSock> { pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result<CgroupSock> {
if attrs.is_empty() {
abort!(attrs, "missing attach type")
}
let item: ItemFn = syn::parse2(item)?; let item: ItemFn = syn::parse2(item)?;
let attach_type: Ident = syn::parse2(attrs)?; let attach_type: Ident = syn::parse2(attrs)?;
match attach_type.to_string().as_str() { match attach_type.to_string().as_str() {

@ -15,6 +15,7 @@ impl CgroupSockAddr {
if attrs.is_empty() { if attrs.is_empty() {
abort!(attrs, "missing attach type") abort!(attrs, "missing attach type")
} }
let item = syn::parse2(item)?;
let attach_type: Ident = syn::parse2(attrs)?; let attach_type: Ident = syn::parse2(attrs)?;
match attach_type.to_string().as_str() { match attach_type.to_string().as_str() {
"connect4" | "connect6" | "bind4" | "bind6" | "getpeername4" | "getpeername6" "connect4" | "connect6" | "bind4" | "bind6" | "getpeername4" | "getpeername6"
@ -22,7 +23,6 @@ impl CgroupSockAddr {
| "recvmsg6" => (), | "recvmsg6" => (),
_ => abort!(attach_type, "invalid attach type"), _ => abort!(attach_type, "invalid attach type"),
} }
let item = syn::parse2(item)?;
Ok(CgroupSockAddr { Ok(CgroupSockAddr {
item, item,
attach_type: attach_type.to_string(), attach_type: attach_type.to_string(),

@ -15,12 +15,12 @@ impl CgroupSockopt {
if attrs.is_empty() { if attrs.is_empty() {
abort!(attrs, "expected attach type"); abort!(attrs, "expected attach type");
} }
let item = syn::parse2(item)?;
let attach_type: Ident = syn::parse2(attrs)?; let attach_type: Ident = syn::parse2(attrs)?;
match attach_type.to_string().as_str() { match attach_type.to_string().as_str() {
"getsockopt" | "setsockopt" => (), "getsockopt" | "setsockopt" => (),
_ => abort!(attach_type, "invalid attach type"), _ => abort!(attach_type, "invalid attach type"),
} }
let item = syn::parse2(item)?;
Ok(CgroupSockopt { Ok(CgroupSockopt {
item, item,
attach_type: attach_type.to_string(), attach_type: attach_type.to_string(),

@ -33,12 +33,12 @@ pub(crate) struct KProbe {
impl KProbe { impl KProbe {
pub(crate) fn parse(kind: KProbeKind, attrs: TokenStream, item: TokenStream) -> Result<KProbe> { pub(crate) fn parse(kind: KProbeKind, attrs: TokenStream, item: TokenStream) -> Result<KProbe> {
let item = syn::parse2(item)?;
let mut args = syn::parse2(attrs)?; let mut args = syn::parse2(attrs)?;
let function = pop_string_arg(&mut args, "function"); let function = pop_string_arg(&mut args, "function");
let offset = pop_string_arg(&mut args, "offset").map(|v| v.parse::<u64>().unwrap()); let offset = pop_string_arg(&mut args, "offset").map(|v| v.parse::<u64>().unwrap());
err_on_unknown_args(&args)?; err_on_unknown_args(&args)?;
let item = syn::parse2(item)?;
Ok(KProbe { Ok(KProbe {
kind, kind,
item, item,

@ -14,8 +14,8 @@ pub(crate) struct Map {
impl Map { impl Map {
pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result<Map> { pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result<Map> {
let mut args = syn::parse2(attrs)?;
let item: ItemStatic = syn::parse2(item)?; let item: ItemStatic = syn::parse2(item)?;
let mut args = syn::parse2(attrs)?;
let name = name_arg(&mut args).unwrap_or_else(|| item.ident.to_string()); let name = name_arg(&mut args).unwrap_or_else(|| item.ident.to_string());
Ok(Map { item, name }) Ok(Map { item, name })
} }

@ -15,8 +15,8 @@ pub(crate) struct TracePoint {
impl TracePoint { impl TracePoint {
pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result<TracePoint> { pub(crate) fn parse(attrs: TokenStream, item: TokenStream) -> Result<TracePoint> {
let mut args = syn::parse2(attrs)?;
let item = syn::parse2(item)?; let item = syn::parse2(item)?;
let mut args = syn::parse2(attrs)?;
let name = pop_string_arg(&mut args, "name"); let name = pop_string_arg(&mut args, "name");
let category = pop_string_arg(&mut args, "category"); let category = pop_string_arg(&mut args, "category");
err_on_unknown_args(&args)?; err_on_unknown_args(&args)?;

@ -35,14 +35,13 @@ pub(crate) struct UProbe {
impl UProbe { impl UProbe {
pub(crate) fn parse(kind: UProbeKind, attrs: TokenStream, item: TokenStream) -> Result<UProbe> { pub(crate) fn parse(kind: UProbeKind, attrs: TokenStream, item: TokenStream) -> Result<UProbe> {
let item = syn::parse2(item)?;
let mut args = syn::parse2(attrs)?; let mut args = syn::parse2(attrs)?;
let path = pop_string_arg(&mut args, "path"); let path = pop_string_arg(&mut args, "path");
let function = pop_string_arg(&mut args, "function"); let function = pop_string_arg(&mut args, "function");
let offset = pop_string_arg(&mut args, "offset").map(|v| v.parse::<u64>().unwrap()); let offset = pop_string_arg(&mut args, "offset").map(|v| v.parse::<u64>().unwrap());
let sleepable = pop_bool_arg(&mut args, "sleepable"); let sleepable = pop_bool_arg(&mut args, "sleepable");
err_on_unknown_args(&args)?; err_on_unknown_args(&args)?;
let item = syn::parse2(item)?;
Ok(UProbe { Ok(UProbe {
kind, kind,
item, item,

Loading…
Cancel
Save