aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/c_src/asn1_erl_nif.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2011-07-05 16:00:07 +0200
committerLukas Larsson <[email protected]>2011-08-01 16:38:19 +0200
commit7c6dbd15b5ce56459606cb1bb6aa719ba9ce4f3c (patch)
treefc73c2c8ffd96513c5cf503fc12d9c3414212e47 /lib/asn1/c_src/asn1_erl_nif.c
parenta1af48c240079e3923d7eb79511e2539a6713762 (diff)
downloadotp-7c6dbd15b5ce56459606cb1bb6aa719ba9ce4f3c.tar.gz
otp-7c6dbd15b5ce56459606cb1bb6aa719ba9ce4f3c.tar.bz2
otp-7c6dbd15b5ce56459606cb1bb6aa719ba9ce4f3c.zip
Add load, upgrade and purge functions for asn1 nifs
Diffstat (limited to 'lib/asn1/c_src/asn1_erl_nif.c')
-rw-r--r--lib/asn1/c_src/asn1_erl_nif.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/asn1/c_src/asn1_erl_nif.c b/lib/asn1/c_src/asn1_erl_nif.c
index 2928f098f7..41ce504273 100644
--- a/lib/asn1/c_src/asn1_erl_nif.c
+++ b/lib/asn1/c_src/asn1_erl_nif.c
@@ -1046,7 +1046,29 @@ static ERL_NIF_TERM decode_ber_tlv(ErlNifEnv* env, int argc,
return return_term;
}
+static int is_ok_load_info(ErlNifEnv* env, ERL_NIF_TERM load_info) {
+ int i;
+ return enif_get_int(env, load_info, &i) && i == 1;
+}
+
+static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) {
+ if (!is_ok_load_info(env, load_info))
+ return -1;
+ return 0;
+}
+
+static int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data,
+ ERL_NIF_TERM load_info) {
+ if (!is_ok_load_info(env, load_info))
+ return -1;
+ return 0;
+}
+
+static void unload(ErlNifEnv* env, void* priv_data) {
+
+}
+
static ErlNifFunc nif_funcs[] = { { "encode_per_complete", 1,
encode_per_complete }, { "decode_ber_tlv", 1, decode_ber_tlv } };
-ERL_NIF_INIT(asn1rt_nif, nif_funcs, NULL, NULL, NULL, NULL)
+ERL_NIF_INIT(asn1rt_nif, nif_funcs, load, NULL, upgrade, unload)