Rust BPF program cleanup (#7990)

This commit is contained in:
Jack May
2020-01-27 18:27:44 -08:00
committed by GitHub
parent fd7d5cbe0d
commit 1596c961d9
12 changed files with 119 additions and 124 deletions

186
programs/bpf/Cargo.lock generated
View File

@ -1926,165 +1926,165 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "solana-bpf-loader-program" name = "solana-bpf-loader-program"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-bpf-programs" name = "solana-bpf-programs"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", "elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-program 0.23.0", "solana-bpf-loader-program 0.24.0",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-runtime 0.23.0", "solana-runtime 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-128bit" name = "solana-bpf-rust-128bit"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-bpf-rust-128bit-dep 0.23.0", "solana-bpf-rust-128bit-dep 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-128bit-dep" name = "solana-bpf-rust-128bit-dep"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-alloc" name = "solana-bpf-rust-alloc"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-dep-crate" name = "solana-bpf-rust-dep-crate"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-dup-accounts" name = "solana-bpf-rust-dup-accounts"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-external-spend" name = "solana-bpf-rust-external-spend"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-iter" name = "solana-bpf-rust-iter"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-many-args" name = "solana-bpf-rust-many-args"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-bpf-rust-many-args-dep 0.23.0", "solana-bpf-rust-many-args-dep 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-many-args-dep" name = "solana-bpf-rust-many-args-dep"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-noop" name = "solana-bpf-rust-noop"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-panic" name = "solana-bpf-rust-panic"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-param-passing" name = "solana-bpf-rust-param-passing"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-bpf-rust-param-passing-dep 0.23.0", "solana-bpf-rust-param-passing-dep 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-param-passing-dep" name = "solana-bpf-rust-param-passing-dep"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-bpf-rust-sysval" name = "solana-bpf-rust-sysval"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.23.0", "solana-sdk-bpf-test 0.24.0",
] ]
[[package]] [[package]]
name = "solana-config-program" name = "solana-config-program"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
] ]
[[package]] [[package]]
name = "solana-crate-features" name = "solana-crate-features"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)",
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2107,7 +2107,7 @@ dependencies = [
[[package]] [[package]]
name = "solana-logger" name = "solana-logger"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2116,30 +2116,30 @@ dependencies = [
[[package]] [[package]]
name = "solana-measure" name = "solana-measure"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-metrics 0.23.0", "solana-metrics 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
] ]
[[package]] [[package]]
name = "solana-metrics" name = "solana-metrics"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-rayon-threadlimit" name = "solana-rayon-threadlimit"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2147,7 +2147,7 @@ dependencies = [
[[package]] [[package]]
name = "solana-runtime" name = "solana-runtime"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2164,22 +2164,22 @@ dependencies = [
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-program 0.23.0", "solana-bpf-loader-program 0.24.0",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-measure 0.23.0", "solana-measure 0.24.0",
"solana-metrics 0.23.0", "solana-metrics 0.24.0",
"solana-rayon-threadlimit 0.23.0", "solana-rayon-threadlimit 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-stake-program 0.23.0", "solana-stake-program 0.24.0",
"solana-storage-program 0.23.0", "solana-storage-program 0.24.0",
"solana-vote-program 0.23.0", "solana-vote-program 0.24.0",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-sdk" name = "solana-sdk"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2203,19 +2203,19 @@ dependencies = [
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-crate-features 0.23.0", "solana-crate-features 0.24.0",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-sdk-macro 0.23.0", "solana-sdk-macro 0.24.0",
"thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-sdk-bpf-test" name = "solana-sdk-bpf-test"
version = "0.23.0" version = "0.24.0"
[[package]] [[package]]
name = "solana-sdk-macro" name = "solana-sdk-macro"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2225,7 +2225,7 @@ dependencies = [
[[package]] [[package]]
name = "solana-stake-program" name = "solana-stake-program"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2234,17 +2234,17 @@ dependencies = [
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-config-program 0.23.0", "solana-config-program 0.24.0",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-metrics 0.23.0", "solana-metrics 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"solana-vote-program 0.23.0", "solana-vote-program 0.24.0",
"thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-storage-program" name = "solana-storage-program"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2253,13 +2253,13 @@ dependencies = [
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
] ]
[[package]] [[package]]
name = "solana-vote-program" name = "solana-vote-program"
version = "0.23.0" version = "0.24.0"
dependencies = [ dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2267,9 +2267,9 @@ dependencies = [
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0", "solana-logger 0.24.0",
"solana-metrics 0.23.0", "solana-metrics 0.24.0",
"solana-sdk 0.23.0", "solana-sdk 0.24.0",
"thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]

View File

@ -3,10 +3,8 @@
#[macro_use] #[macro_use]
extern crate alloc; extern crate alloc;
extern crate solana_sdk; extern crate solana_sdk;
use solana_sdk::entrypoint::SUCCESS; use solana_sdk::{entrypoint::SUCCESS, info};
use solana_sdk::info; use std::{alloc::Layout, mem};
use std::alloc::Layout;
use std::mem;
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 { pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -22,7 +20,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
} }
unsafe { unsafe {
// Test modest allocation and deallocation // Test modest allocation and de-allocation
let layout = Layout::from_size_align(100, mem::align_of::<u8>()).unwrap(); let layout = Layout::from_size_align(100, mem::align_of::<u8>()).unwrap();
let ptr = alloc::alloc::alloc(layout); let ptr = alloc::alloc::alloc(layout);

View File

@ -8,7 +8,7 @@ use solana_sdk::{
entrypoint!(process_instruction); entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &mut [AccountInfo], accounts: &[AccountInfo],
instruction_data: &[u8], instruction_data: &[u8],
) -> u32 { ) -> u32 {
const FAILURE: u32 = 1; const FAILURE: u32 = 1;

View File

@ -6,7 +6,7 @@ use solana_sdk::{account_info::AccountInfo, entrypoint, entrypoint::SUCCESS, pub
entrypoint!(process_instruction); entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &mut [AccountInfo], accounts: &[AccountInfo],
_instruction_data: &[u8], _instruction_data: &[u8],
) -> u32 { ) -> u32 {
// account 0 is the mint and not owned by this program, any debit of its lamports // account 0 is the mint and not owned by this program, any debit of its lamports

View File

@ -1,8 +1,7 @@
//! @brief Example Rust-based BPF program tests loop iteration //! @brief Example Rust-based BPF program tests loop iteration
extern crate solana_sdk; extern crate solana_sdk;
use solana_sdk::entrypoint::SUCCESS; use solana_sdk::{entrypoint::SUCCESS, info};
use solana_sdk::info;
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 { pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -22,7 +21,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
// Pulls in the stubs requried for `info!()` // Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!(); solana_sdk_bpf_test::stubs!();
#[test] #[test]

View File

@ -2,8 +2,7 @@
mod helper; mod helper;
extern crate solana_sdk; extern crate solana_sdk;
use solana_sdk::entrypoint::SUCCESS; use solana_sdk::{entrypoint::SUCCESS, info};
use solana_sdk::info;
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 { pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -30,7 +29,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
// Pulls in the stubs requried for `info!()` // Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!(); solana_sdk_bpf_test::stubs!();
#[test] #[test]

View File

@ -51,7 +51,7 @@ pub fn many_args_sret(
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
// Pulls in the stubs requried for `info!()` // Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!(); solana_sdk_bpf_test::stubs!();
#[test] #[test]

View File

@ -22,7 +22,7 @@ fn return_sstruct() -> SStruct {
entrypoint!(process_instruction); entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
program_id: &Pubkey, program_id: &Pubkey,
accounts: &mut [AccountInfo], accounts: &[AccountInfo],
instruction_data: &[u8], instruction_data: &[u8],
) -> u32 { ) -> u32 {
info!("Program identifier:"); info!("Program identifier:");

View File

@ -2,8 +2,7 @@
extern crate solana_sdk; extern crate solana_sdk;
use solana_bpf_rust_param_passing_dep::{Data, TestDep}; use solana_bpf_rust_param_passing_dep::{Data, TestDep};
use solana_sdk::entrypoint::SUCCESS; use solana_sdk::{entrypoint::SUCCESS, info};
use solana_sdk::info;
#[no_mangle] #[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 { pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -27,7 +26,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
// Pulls in the stubs requried for `info!()` // Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!(); solana_sdk_bpf_test::stubs!();
#[test] #[test]

View File

@ -27,7 +27,7 @@ impl<'a> TestDep {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
// Pulls in the stubs requried for `info!()` // Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!(); solana_sdk_bpf_test::stubs!();
#[test] #[test]

View File

@ -19,7 +19,7 @@ use solana_sdk::{
entrypoint!(process_instruction); entrypoint!(process_instruction);
fn process_instruction( fn process_instruction(
_program_id: &Pubkey, _program_id: &Pubkey,
accounts: &mut [AccountInfo], accounts: &[AccountInfo],
_instruction_data: &[u8], _instruction_data: &[u8],
) -> u32 { ) -> u32 {
// Clock // Clock

View File

@ -1,4 +1,4 @@
//! @brief Solana Rust-based BPF program entrypoint and its parameter types //! @brief Solana Rust-based BPF program entry point and its parameter types
#![cfg(feature = "program")] #![cfg(feature = "program")]
@ -16,22 +16,22 @@ use std::{
slice::{from_raw_parts, from_raw_parts_mut}, slice::{from_raw_parts, from_raw_parts_mut},
}; };
/// User implemented program entrypoint /// User implemented function to process an instruction
/// ///
/// program_id: Program ID of the currently executing program /// program_id: Program ID of the currently executing program
/// accounts: Accounts passed as part of the instruction /// accounts: Accounts passed as part of the instruction
/// data: Instruction data /// instruction_data: Instruction data
pub type ProcessInstruction = pub type ProcessInstruction =
fn(program_id: &Pubkey, accounts: &mut [AccountInfo], instruction_data: &[u8]) -> u32; fn(program_id: &Pubkey, accounts: &[AccountInfo], instruction_data: &[u8]) -> u32;
/// Programs indicate success with a return value of 0 /// Programs indicate success with a return value of 0
pub const SUCCESS: u32 = 0; pub const SUCCESS: u32 = 0;
/// Declare entrypoint of the program. /// Declare the entry point of the program.
/// ///
/// Deserialize the program input parameters and call /// Deserialize the program input arguments and call
/// the user defined `ProcessInstruction`. Users must call /// the user defined `ProcessInstruction` function.
/// this macro otherwise an entrypoint for /// Users must call this macro otherwise an entry point for
/// their program will not be created. /// their program will not be created.
#[macro_export] #[macro_export]
macro_rules! entrypoint { macro_rules! entrypoint {
@ -40,15 +40,15 @@ macro_rules! entrypoint {
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn entrypoint(input: *mut u8) -> u32 { pub unsafe extern "C" fn entrypoint(input: *mut u8) -> u32 {
unsafe { unsafe {
let (program_id, mut accounts, instruction_data) = let (program_id, accounts, instruction_data) =
$crate::entrypoint::deserialize(input); $crate::entrypoint::deserialize(input);
$process_instruction(&program_id, &mut accounts, &instruction_data) $process_instruction(&program_id, &accounts, &instruction_data)
} }
} }
}; };
} }
/// Deserialize the input parameters /// Deserialize the input arguments
/// ///
/// # Safety /// # Safety
#[allow(clippy::type_complexity)] #[allow(clippy::type_complexity)]