1*fdd7c7e0SBoqun Feng#!/bin/sh 2*fdd7c7e0SBoqun Feng# SPDX-License-Identifier: GPL-2.0 3*fdd7c7e0SBoqun Feng 4*fdd7c7e0SBoqun FengATOMICDIR=$(dirname $0) 5*fdd7c7e0SBoqun Feng 6*fdd7c7e0SBoqun Feng. ${ATOMICDIR}/atomic-tbl.sh 7*fdd7c7e0SBoqun Feng 8*fdd7c7e0SBoqun Feng#gen_proto_order_variant(meta, pfx, name, sfx, order, atomic, int, arg...) 9*fdd7c7e0SBoqun Fenggen_proto_order_variant() 10*fdd7c7e0SBoqun Feng{ 11*fdd7c7e0SBoqun Feng local meta="$1"; shift 12*fdd7c7e0SBoqun Feng local pfx="$1"; shift 13*fdd7c7e0SBoqun Feng local name="$1"; shift 14*fdd7c7e0SBoqun Feng local sfx="$1"; shift 15*fdd7c7e0SBoqun Feng local order="$1"; shift 16*fdd7c7e0SBoqun Feng local atomic="$1"; shift 17*fdd7c7e0SBoqun Feng local int="$1"; shift 18*fdd7c7e0SBoqun Feng 19*fdd7c7e0SBoqun Feng local atomicname="${atomic}_${pfx}${name}${sfx}${order}" 20*fdd7c7e0SBoqun Feng 21*fdd7c7e0SBoqun Feng local ret="$(gen_ret_type "${meta}" "${int}")" 22*fdd7c7e0SBoqun Feng local params="$(gen_params "${int}" "${atomic}" "$@")" 23*fdd7c7e0SBoqun Feng local args="$(gen_args "$@")" 24*fdd7c7e0SBoqun Feng local retstmt="$(gen_ret_stmt "${meta}")" 25*fdd7c7e0SBoqun Feng 26*fdd7c7e0SBoqun Fengcat <<EOF 27*fdd7c7e0SBoqun Feng__rust_helper ${ret} 28*fdd7c7e0SBoqun Fengrust_helper_${atomicname}(${params}) 29*fdd7c7e0SBoqun Feng{ 30*fdd7c7e0SBoqun Feng ${retstmt}${atomicname}(${args}); 31*fdd7c7e0SBoqun Feng} 32*fdd7c7e0SBoqun Feng 33*fdd7c7e0SBoqun FengEOF 34*fdd7c7e0SBoqun Feng} 35*fdd7c7e0SBoqun Feng 36*fdd7c7e0SBoqun Fengcat << EOF 37*fdd7c7e0SBoqun Feng// SPDX-License-Identifier: GPL-2.0 38*fdd7c7e0SBoqun Feng 39*fdd7c7e0SBoqun Feng// Generated by $0 40*fdd7c7e0SBoqun Feng// DO NOT MODIFY THIS FILE DIRECTLY 41*fdd7c7e0SBoqun Feng 42*fdd7c7e0SBoqun Feng/* 43*fdd7c7e0SBoqun Feng * This file provides helpers for the various atomic functions for Rust. 44*fdd7c7e0SBoqun Feng */ 45*fdd7c7e0SBoqun Feng#ifndef _RUST_ATOMIC_API_H 46*fdd7c7e0SBoqun Feng#define _RUST_ATOMIC_API_H 47*fdd7c7e0SBoqun Feng 48*fdd7c7e0SBoqun Feng#include <linux/atomic.h> 49*fdd7c7e0SBoqun Feng 50*fdd7c7e0SBoqun Feng// TODO: Remove this after INLINE_HELPERS support is added. 51*fdd7c7e0SBoqun Feng#ifndef __rust_helper 52*fdd7c7e0SBoqun Feng#define __rust_helper 53*fdd7c7e0SBoqun Feng#endif 54*fdd7c7e0SBoqun Feng 55*fdd7c7e0SBoqun FengEOF 56*fdd7c7e0SBoqun Feng 57*fdd7c7e0SBoqun Fenggrep '^[a-z]' "$1" | while read name meta args; do 58*fdd7c7e0SBoqun Feng gen_proto "${meta}" "${name}" "atomic" "int" ${args} 59*fdd7c7e0SBoqun Fengdone 60*fdd7c7e0SBoqun Feng 61*fdd7c7e0SBoqun Fenggrep '^[a-z]' "$1" | while read name meta args; do 62*fdd7c7e0SBoqun Feng gen_proto "${meta}" "${name}" "atomic64" "s64" ${args} 63*fdd7c7e0SBoqun Fengdone 64*fdd7c7e0SBoqun Feng 65*fdd7c7e0SBoqun Fengcat <<EOF 66*fdd7c7e0SBoqun Feng#endif /* _RUST_ATOMIC_API_H */ 67*fdd7c7e0SBoqun FengEOF 68