main-apidocs-libatomvm-src-erl-underscore-nif-dot-h.md
Include dependency graph for erl_nif.h:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif.h" fillcolor="#BFBFBF"] "2" [label="term_typedef.h" tooltip="term_typedef.h"] "3" [label="assert.h" tooltip="assert.h"] "5" [label="inttypes.h" tooltip="inttypes.h"] "4" [label="limits.h" tooltip="limits.h"] "6" [label="stdint.h" tooltip="stdint.h"] "1" -> "2" [dir=forward tooltip="include"] "2" -> "3" [dir=forward tooltip="include"] "2" -> "4" [dir=forward tooltip="include"] "2" -> "5" [dir=forward tooltip="include"] "2" -> "6" [dir=forward tooltip="include"] }
This graph shows which files directly or indirectly include erl_nif.h:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "6" [label="/__w/AtomVM/AtomVM/src/libAtomVM/avmpack.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/avmpack.c"] "5" [label="/__w/AtomVM/AtomVM/src/libAtomVM/avmpack.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/avmpack.h"] "12" [label="/__w/AtomVM/AtomVM/src/libAtomVM/bif.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/bif.c"] "11" [label="/__w/AtomVM/AtomVM/src/libAtomVM/bif.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/bif.h"] "61" [label="/__w/AtomVM/AtomVM/src/libAtomVM/bitstring.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/bitstring.c"] "60" [label="/__w/AtomVM/AtomVM/src/libAtomVM/bitstring.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/bitstring.h"] "2" [label="/__w/AtomVM/AtomVM/src/libAtomVM/context.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/context.c"] "10" [label="/__w/AtomVM/AtomVM/src/libAtomVM/context.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/context.h"] "18" [label="/__w/AtomVM/AtomVM/src/libAtomVM/debug.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/debug.c"] "17" [label="/__w/AtomVM/AtomVM/src/libAtomVM/debug.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/debug.h"] "50" [label="/__w/AtomVM/AtomVM/src/libAtomVM/defaultatoms.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/defaultatoms.h"] "51" [label="/__w/AtomVM/AtomVM/src/libAtomVM/dictionary.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/dictionary.c"] "63" [label="/__w/AtomVM/AtomVM/src/libAtomVM/dictionary.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/dictionary.h"] "3" [label="/__w/AtomVM/AtomVM/src/libAtomVM/dist_nifs.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/dist_nifs.c"] "52" [label="/__w/AtomVM/AtomVM/src/libAtomVM/dist_nifs.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/dist_nifs.h"] "1" [label="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif.h" fillcolor="#BFBFBF"] "20" [label="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif_priv.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif_priv.h"] "28" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets.c"] "64" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets.h"] "53" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.c"] "54" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets_multimap.h"] "65" [label="/__w/AtomVM/AtomVM/src/libAtomVM/exportedfunction.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/exportedfunction.h"] "13" [label="/__w/AtomVM/AtomVM/src/libAtomVM/external_term.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/external_term.c"] "66" [label="/__w/AtomVM/AtomVM/src/libAtomVM/external_term.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/external_term.h"] "7" [label="/__w/AtomVM/AtomVM/src/libAtomVM/globalcontext.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/globalcontext.c"] "4" [label="/__w/AtomVM/AtomVM/src/libAtomVM/globalcontext.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/globalcontext.h"] "31" [label="/__w/AtomVM/AtomVM/src/libAtomVM/inet.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/inet.c"] "30" [label="/__w/AtomVM/AtomVM/src/libAtomVM/inet.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/inet.h"] "33" [label="/__w/AtomVM/AtomVM/src/libAtomVM/interop.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/interop.c"] "29" [label="/__w/AtomVM/AtomVM/src/libAtomVM/interop.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/interop.h"] "14" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit.c"] "62" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit.h"] "8" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.c"] "36" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.h"] "49" [label="/__w/AtomVM/AtomVM/src/libAtomVM/mailbox.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/mailbox.c"] "19" [label="/__w/AtomVM/AtomVM/src/libAtomVM/memory.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/memory.c"] "56" [label="/__w/AtomVM/AtomVM/src/libAtomVM/memory.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/memory.h"] "15" [label="/__w/AtomVM/AtomVM/src/libAtomVM/module.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/module.c"] "35" [label="/__w/AtomVM/AtomVM/src/libAtomVM/module.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/module.h"] "9" [label="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.c"] "40" [label="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.h"] "21" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.c"] "22" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.h"] "32" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.c"] "41" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.h"] "23" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.c"] "42" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.h"] "24" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.c"] "43" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.h"] "67" [label="/__w/AtomVM/AtomVM/src/libAtomVM/overflow_helpers.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/overflow_helpers.h"] "37" [label="/__w/AtomVM/AtomVM/src/libAtomVM/platform_nifs.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/platform_nifs.h"] "46" [label="/__w/AtomVM/AtomVM/src/libAtomVM/port.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/port.c"] "47" [label="/__w/AtomVM/AtomVM/src/libAtomVM/port.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/port.h"] "45" [label="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.c"] "44" [label="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.h"] "25" [label="/__w/AtomVM/AtomVM/src/libAtomVM/posix_nifs.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/posix_nifs.c"] "55" [label="/__w/AtomVM/AtomVM/src/libAtomVM/posix_nifs.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/posix_nifs.h"] "26" [label="/__w/AtomVM/AtomVM/src/libAtomVM/refc_binary.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/refc_binary.c"] "58" [label="/__w/AtomVM/AtomVM/src/libAtomVM/refc_binary.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/refc_binary.h"] "27" [label="/__w/AtomVM/AtomVM/src/libAtomVM/resources.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/resources.c"] "57" [label="/__w/AtomVM/AtomVM/src/libAtomVM/resources.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/resources.h"] "48" [label="/__w/AtomVM/AtomVM/src/libAtomVM/scheduler.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/scheduler.h"] "16" [label="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.c"] "38" [label="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.h"] "39" [label="/__w/AtomVM/AtomVM/src/libAtomVM/sys.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/sys.h"] "34" [label="/__w/AtomVM/AtomVM/src/libAtomVM/term.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/term.c"] "59" [label="/__w/AtomVM/AtomVM/src/libAtomVM/term.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/term.h"] "5" -> "6" [dir=back tooltip="include"] "5" -> "7" [dir=back tooltip="include"] "5" -> "8" [dir=back tooltip="include"] "5" -> "9" [dir=back tooltip="include"] "11" -> "12" [dir=back tooltip="include"] "11" -> "13" [dir=back tooltip="include"] "11" -> "14" [dir=back tooltip="include"] "11" -> "15" [dir=back tooltip="include"] "11" -> "9" [dir=back tooltip="include"] "11" -> "16" [dir=back tooltip="include"] "60" -> "12" [dir=back tooltip="include"] "60" -> "61" [dir=back tooltip="include"] "60" -> "13" [dir=back tooltip="include"] "60" -> "33" [dir=back tooltip="include"] "60" -> "14" [dir=back tooltip="include"] "60" -> "62" [dir=back tooltip="include"] "60" -> "9" [dir=back tooltip="include"] "10" -> "11" [dir=back tooltip="include"] "10" -> "2" [dir=back tooltip="include"] "10" -> "17" [dir=back tooltip="include"] "10" -> "3" [dir=back tooltip="include"] "10" -> "20" [dir=back tooltip="include"] "10" -> "28" [dir=back tooltip="include"] "10" -> "13" [dir=back tooltip="include"] "10" -> "7" [dir=back tooltip="include"] "10" -> "29" [dir=back tooltip="include"] "10" -> "14" [dir=back tooltip="include"] "10" -> "8" [dir=back tooltip="include"] "10" -> "19" [dir=back tooltip="include"] "10" -> "15" [dir=back tooltip="include"] "10" -> "35" [dir=back tooltip="include"] "10" -> "9" [dir=back tooltip="include"] "10" -> "40" [dir=back tooltip="include"] "10" -> "21" [dir=back tooltip="include"] "10" -> "32" [dir=back tooltip="include"] "10" -> "23" [dir=back tooltip="include"] "10" -> "24" [dir=back tooltip="include"] "10" -> "46" [dir=back tooltip="include"] "10" -> "47" [dir=back tooltip="include"] "10" -> "44" [dir=back tooltip="include"] "10" -> "26" [dir=back tooltip="include"] "10" -> "27" [dir=back tooltip="include"] "10" -> "48" [dir=back tooltip="include"] "10" -> "38" [dir=back tooltip="include"] "10" -> "34" [dir=back tooltip="include"] "17" -> "18" [dir=back tooltip="include"] "17" -> "14" [dir=back tooltip="include"] "17" -> "19" [dir=back tooltip="include"] "50" -> "12" [dir=back tooltip="include"] "50" -> "2" [dir=back tooltip="include"] "50" -> "51" [dir=back tooltip="include"] "50" -> "3" [dir=back tooltip="include"] "50" -> "28" [dir=back tooltip="include"] "50" -> "13" [dir=back tooltip="include"] "50" -> "7" [dir=back tooltip="include"] "50" -> "33" [dir=back tooltip="include"] "50" -> "14" [dir=back tooltip="include"] "50" -> "8" [dir=back tooltip="include"] "50" -> "15" [dir=back tooltip="include"] "50" -> "9" [dir=back tooltip="include"] "50" -> "21" [dir=back tooltip="include"] "50" -> "32" [dir=back tooltip="include"] "50" -> "23" [dir=back tooltip="include"] "50" -> "24" [dir=back tooltip="include"] "50" -> "46" [dir=back tooltip="include"] "50" -> "47" [dir=back tooltip="include"] "50" -> "25" [dir=back tooltip="include"] "50" -> "27" [dir=back tooltip="include"] "50" -> "16" [dir=back tooltip="include"] "50" -> "34" [dir=back tooltip="include"] "63" -> "12" [dir=back tooltip="include"] "63" -> "2" [dir=back tooltip="include"] "63" -> "51" [dir=back tooltip="include"] "63" -> "19" [dir=back tooltip="include"] "63" -> "9" [dir=back tooltip="include"] "63" -> "23" [dir=back tooltip="include"] "63" -> "26" [dir=back tooltip="include"] "52" -> "3" [dir=back tooltip="include"] "52" -> "7" [dir=back tooltip="include"] "52" -> "14" [dir=back tooltip="include"] "52" -> "9" [dir=back tooltip="include"] "1" -> "2" [dir=back tooltip="include"] "1" -> "3" [dir=back tooltip="include"] "1" -> "4" [dir=back tooltip="include"] "1" -> "8" [dir=back tooltip="include"] "1" -> "56" [dir=back tooltip="include"] "1" -> "23" [dir=back tooltip="include"] "1" -> "24" [dir=back tooltip="include"] "1" -> "27" [dir=back tooltip="include"] "1" -> "57" [dir=back tooltip="include"] "20" -> "2" [dir=back tooltip="include"] "20" -> "3" [dir=back tooltip="include"] "20" -> "7" [dir=back tooltip="include"] "20" -> "8" [dir=back tooltip="include"] "20" -> "19" [dir=back tooltip="include"] "20" -> "9" [dir=back tooltip="include"] "20" -> "21" [dir=back tooltip="include"] "20" -> "22" [dir=back tooltip="include"] "20" -> "23" [dir=back tooltip="include"] "20" -> "24" [dir=back tooltip="include"] "20" -> "25" [dir=back tooltip="include"] "20" -> "26" [dir=back tooltip="include"] "20" -> "27" [dir=back tooltip="include"] "64" -> "28" [dir=back tooltip="include"] "64" -> "4" [dir=back tooltip="include"] "64" -> "9" [dir=back tooltip="include"] "54" -> "28" [dir=back tooltip="include"] "54" -> "53" [dir=back tooltip="include"] "65" -> "11" [dir=back tooltip="include"] "65" -> "52" [dir=back tooltip="include"] "65" -> "62" [dir=back tooltip="include"] "65" -> "35" [dir=back tooltip="include"] "65" -> "40" [dir=back tooltip="include"] "65" -> "37" [dir=back tooltip="include"] "65" -> "55" [dir=back tooltip="include"] "66" -> "3" [dir=back tooltip="include"] "66" -> "13" [dir=back tooltip="include"] "66" -> "15" [dir=back tooltip="include"] "66" -> "9" [dir=back tooltip="include"] "4" -> "5" [dir=back tooltip="include"] "4" -> "2" [dir=back tooltip="include"] "4" -> "10" [dir=back tooltip="include"] "4" -> "50" [dir=back tooltip="include"] "4" -> "3" [dir=back tooltip="include"] "4" -> "52" [dir=back tooltip="include"] "4" -> "53" [dir=back tooltip="include"] "4" -> "54" [dir=back tooltip="include"] "4" -> "13" [dir=back tooltip="include"] "4" -> "7" [dir=back tooltip="include"] "4" -> "8" [dir=back tooltip="include"] "4" -> "36" [dir=back tooltip="include"] "4" -> "19" [dir=back tooltip="include"] "4" -> "15" [dir=back tooltip="include"] "4" -> "35" [dir=back tooltip="include"] "4" -> "9" [dir=back tooltip="include"] "4" -> "21" [dir=back tooltip="include"] "4" -> "32" [dir=back tooltip="include"] "4" -> "41" [dir=back tooltip="include"] "4" -> "23" [dir=back tooltip="include"] "4" -> "42" [dir=back tooltip="include"] "4" -> "24" [dir=back tooltip="include"] "4" -> "43" [dir=back tooltip="include"] "4" -> "46" [dir=back tooltip="include"] "4" -> "47" [dir=back tooltip="include"] "4" -> "44" [dir=back tooltip="include"] "4" -> "25" [dir=back tooltip="include"] "4" -> "55" [dir=back tooltip="include"] "4" -> "27" [dir=back tooltip="include"] "4" -> "48" [dir=back tooltip="include"] "4" -> "16" [dir=back tooltip="include"] "4" -> "39" [dir=back tooltip="include"] "30" -> "31" [dir=back tooltip="include"] "30" -> "32" [dir=back tooltip="include"] "30" -> "23" [dir=back tooltip="include"] "30" -> "24" [dir=back tooltip="include"] "29" -> "12" [dir=back tooltip="include"] "29" -> "7" [dir=back tooltip="include"] "29" -> "30" [dir=back tooltip="include"] "29" -> "33" [dir=back tooltip="include"] "29" -> "9" [dir=back tooltip="include"] "29" -> "21" [dir=back tooltip="include"] "29" -> "32" [dir=back tooltip="include"] "29" -> "23" [dir=back tooltip="include"] "29" -> "24" [dir=back tooltip="include"] "29" -> "25" [dir=back tooltip="include"] "29" -> "34" [dir=back tooltip="include"] "62" -> "10" [dir=back tooltip="include"] "62" -> "14" [dir=back tooltip="include"] "62" -> "8" [dir=back tooltip="include"] "62" -> "15" [dir=back tooltip="include"] "62" -> "35" [dir=back tooltip="include"] "62" -> "9" [dir=back tooltip="include"] "36" -> "8" [dir=back tooltip="include"] "56" -> "2" [dir=back tooltip="include"] "56" -> "3" [dir=back tooltip="include"] "56" -> "20" [dir=back tooltip="include"] "56" -> "28" [dir=back tooltip="include"] "56" -> "13" [dir=back tooltip="include"] "56" -> "30" [dir=back tooltip="include"] "56" -> "14" [dir=back tooltip="include"] "56" -> "49" [dir=back tooltip="include"] "56" -> "19" [dir=back tooltip="include"] "56" -> "9" [dir=back tooltip="include"] "56" -> "23" [dir=back tooltip="include"] "56" -> "47" [dir=back tooltip="include"] "56" -> "26" [dir=back tooltip="include"] "56" -> "57" [dir=back tooltip="include"] "56" -> "16" [dir=back tooltip="include"] "56" -> "59" [dir=back tooltip="include"] "35" -> "11" [dir=back tooltip="include"] "35" -> "13" [dir=back tooltip="include"] "35" -> "14" [dir=back tooltip="include"] "35" -> "8" [dir=back tooltip="include"] "35" -> "36" [dir=back tooltip="include"] "35" -> "15" [dir=back tooltip="include"] "35" -> "9" [dir=back tooltip="include"] "35" -> "37" [dir=back tooltip="include"] "35" -> "38" [dir=back tooltip="include"] "35" -> "39" [dir=back tooltip="include"] "35" -> "34" [dir=back tooltip="include"] "40" -> "3" [dir=back tooltip="include"] "40" -> "13" [dir=back tooltip="include"] "40" -> "14" [dir=back tooltip="include"] "40" -> "8" [dir=back tooltip="include"] "40" -> "15" [dir=back tooltip="include"] "40" -> "9" [dir=back tooltip="include"] "40" -> "21" [dir=back tooltip="include"] "40" -> "22" [dir=back tooltip="include"] "40" -> "32" [dir=back tooltip="include"] "40" -> "41" [dir=back tooltip="include"] "40" -> "23" [dir=back tooltip="include"] "40" -> "42" [dir=back tooltip="include"] "40" -> "24" [dir=back tooltip="include"] "40" -> "43" [dir=back tooltip="include"] "40" -> "44" [dir=back tooltip="include"] "40" -> "25" [dir=back tooltip="include"] "40" -> "16" [dir=back tooltip="include"] "22" -> "7" [dir=back tooltip="include"] "22" -> "21" [dir=back tooltip="include"] "41" -> "32" [dir=back tooltip="include"] "42" -> "23" [dir=back tooltip="include"] "42" -> "24" [dir=back tooltip="include"] "43" -> "24" [dir=back tooltip="include"] "67" -> "12" [dir=back tooltip="include"] "67" -> "28" [dir=back tooltip="include"] "37" -> "9" [dir=back tooltip="include"] "47" -> "31" [dir=back tooltip="include"] "47" -> "9" [dir=back tooltip="include"] "47" -> "32" [dir=back tooltip="include"] "47" -> "23" [dir=back tooltip="include"] "47" -> "24" [dir=back tooltip="include"] "47" -> "46" [dir=back tooltip="include"] "44" -> "45" [dir=back tooltip="include"] "55" -> "7" [dir=back tooltip="include"] "55" -> "9" [dir=back tooltip="include"] "55" -> "32" [dir=back tooltip="include"] "55" -> "23" [dir=back tooltip="include"] "55" -> "25" [dir=back tooltip="include"] "58" -> "7" [dir=back tooltip="include"] "58" -> "19" [dir=back tooltip="include"] "58" -> "23" [dir=back tooltip="include"] "58" -> "24" [dir=back tooltip="include"] "58" -> "26" [dir=back tooltip="include"] "58" -> "27" [dir=back tooltip="include"] "58" -> "59" [dir=back tooltip="include"] "57" -> "20" [dir=back tooltip="include"] "57" -> "13" [dir=back tooltip="include"] "57" -> "7" [dir=back tooltip="include"] "57" -> "58" [dir=back tooltip="include"] "57" -> "27" [dir=back tooltip="include"] "57" -> "59" [dir=back tooltip="include"] "48" -> "7" [dir=back tooltip="include"] "48" -> "14" [dir=back tooltip="include"] "48" -> "49" [dir=back tooltip="include"] "48" -> "9" [dir=back tooltip="include"] "48" -> "23" [dir=back tooltip="include"] "38" -> "14" [dir=back tooltip="include"] "38" -> "16" [dir=back tooltip="include"] "39" -> "2" [dir=back tooltip="include"] "39" -> "7" [dir=back tooltip="include"] "39" -> "8" [dir=back tooltip="include"] "39" -> "15" [dir=back tooltip="include"] "39" -> "9" [dir=back tooltip="include"] "39" -> "23" [dir=back tooltip="include"] "39" -> "27" [dir=back tooltip="include"] "59" -> "12" [dir=back tooltip="include"] "59" -> "60" [dir=back tooltip="include"] "59" -> "2" [dir=back tooltip="include"] "59" -> "10" [dir=back tooltip="include"] "59" -> "51" [dir=back tooltip="include"] "59" -> "63" [dir=back tooltip="include"] "59" -> "3" [dir=back tooltip="include"] "59" -> "52" [dir=back tooltip="include"] "59" -> "28" [dir=back tooltip="include"] "59" -> "64" [dir=back tooltip="include"] "59" -> "53" [dir=back tooltip="include"] "59" -> "54" [dir=back tooltip="include"] "59" -> "65" [dir=back tooltip="include"] "59" -> "13" [dir=back tooltip="include"] "59" -> "66" [dir=back tooltip="include"] "59" -> "7" [dir=back tooltip="include"] "59" -> "4" [dir=back tooltip="include"] "59" -> "31" [dir=back tooltip="include"] "59" -> "33" [dir=back tooltip="include"] "59" -> "29" [dir=back tooltip="include"] "59" -> "14" [dir=back tooltip="include"] "59" -> "62" [dir=back tooltip="include"] "59" -> "8" [dir=back tooltip="include"] "59" -> "19" [dir=back tooltip="include"] "59" -> "15" [dir=back tooltip="include"] "59" -> "35" [dir=back tooltip="include"] "59" -> "9" [dir=back tooltip="include"] "59" -> "21" [dir=back tooltip="include"] "59" -> "32" [dir=back tooltip="include"] "59" -> "23" [dir=back tooltip="include"] "59" -> "24" [dir=back tooltip="include"] "59" -> "67" [dir=back tooltip="include"] "59" -> "47" [dir=back tooltip="include"] "59" -> "55" [dir=back tooltip="include"] "59" -> "38" [dir=back tooltip="include"] "59" -> "34" [dir=back tooltip="include"] }
Public API for nifs, compatible with Erlang/OTP API.
Typedefs
typedef struct ErlNifEnv ErlNifEnv
Opaque environment, passed to nifs.
typedef term ERL_NIF_TERM
A term.
typedef int32_t ErlNifPid
a pid
We currently only handle local pids.
typedef struct ResourceType ErlNifResourceType
Opaque resource type.
typedef int ErlNifEvent
Selectable event.
typedef void ErlNifResourceDtor(ErlNifEnv *caller_env, void *obj)
Destructor callback.
typedef void ErlNifResourceStop(ErlNifEnv *caller_env, void *obj, ErlNifEvent event, int is_direct_call)
Select stop callback.
typedef void ErlNifResourceDown(ErlNifEnv *caller_env, void *obj, ErlNifPid *pid, ErlNifMonitor *mon)
Resource monitor callback.
Enums
enum ErlNifResourceFlags
resource flags
Values:
enumerator ERL_NIF_RT_CREATE = 1
enum ErlNifSelectFlags
enif_select mode flags
ERL_NIF_SELECT_CANCEL which was introduced with OTP-22, is unimplemented.
Values:
enumerator ERL_NIF_SELECT_READ = 1
enumerator ERL_NIF_SELECT_WRITE = 2
enumerator ERL_NIF_SELECT_STOP = 4
enif_select result flags
ERL_NIF_SELECT_CANCEL which was introduced with OTP-22, is unimplemented.
Values:
enumerator ERL_NIF_SELECT_STOP_CALLED = 1
enumerator ERL_NIF_SELECT_STOP_SCHEDULED = 2
enumerator ERL_NIF_SELECT_INVALID_EVENT = -1
enumerator ERL_NIF_SELECT_FAILED = -2
enumerator ERL_NIF_SELECT_BADARG = -3
Functions
ErlNifResourceType *enif_init_resource_type(ErlNifEnv *env, const char *name, const ErlNifResourceTypeInit *init, ErlNifResourceFlags flags, ErlNifResourceFlags *tried)
Create or take over (code upgrade) a resource type.
Parameters:
env – the current environment
init – a structure describing the callbacks. Callbacks can be NULL if not used.
name – name of the resource (copied)
flags – ERL_NIF_RT_CREATE or ERL_NIF_RT_TAKEOVER to create or take over.
tried – on output, updated to ERL_NIF_RT_CREATE or ERL_NIF_RT_TAKEOVER depending on what has been done. On failure, updated to flags. Can be NULL.
Returns:
the resource type or NULL on failure.
void *enif_alloc_resource(ErlNifResourceType *type, unsigned size)
Allocate a resource for given type for size bytes.
following BEAM semantics, the resource is created with a refcount of 1. A call to enif_release_resource will decrement the refcount and destroy the resource if it is zero.
Typical usage (as suggested by BEAM documentation) is to call enif_make_resource and then enif_release_resource to somewhat transfer ownership to the garbage collector. enif_make_resource will increment refcount to 2 and also add the resource to the MSO list of the context, so when the term is no longer referenced in the context heap, the reference counter will be decremented by gc.
Parameters:
type – a trype created by enif_init_resource_type.
size – the size in bytes.
Returns:
a pointer or NULL on failure.
int enif_get_resource(ErlNifEnv *env, ERL_NIF_TERM t, ErlNifResourceType *type, void **objp)
Get a pointer to a resource from a term representing it.
Parameters:
env – the current environment
t – the term
type – the resource type
objp – on output the pointer to the resource
Returns:
true on success, false on failure, if term is not a resource of type type
int enif_keep_resource(void *resource)
Increment reference count of a resource.
Parameters:
Returns:
true.
int enif_release_resource(void *resource)
Decrement reference count of a resource.
Parameters:
Returns:
true.
ERL_NIF_TERM enif_make_resource(ErlNifEnv *env, void *obj) __attribute__((deprecated("use memory_erl_nif_env_ensure_free + term_from_resource instead")))
create a term from a resource
the term can be later passed to enif_get_resource.
The resource reference counter is incremented and it is added to the MSO list of the heap of env (which must be a context).
If the resource was just allocated with enif_alloc_resource, the reference counter should typically be decremented by a call to enif_release_resource matching usage documented by BEAM.
If the resource was not just allocated with enif_alloc_resource, to clear usage confusion, users should rather call term_from_resource and should not decrement the reference counter.
Deprecated:
This function aborts on out of memory. Use memory_erl_nif_env_ensure_free followed by term_from_resource instead.
Parameters:
env – current environment
obj – resource
Returns:
a new term representing the resource
ERL_NIF_TERM enif_make_resource_binary(ErlNifEnv *env, void *obj, const void *data, size_t size) __attribute__((deprecated("use memory_erl_nif_env_ensure_free + term_from_resource_binary instead")))
create a binary term memory managed by a resource.
the resource obj should have been allocated by enif_alloc_resource.
The binary data should be readable and unchanged until the resource is destroyed and its destructor is called.
Several binaries can be created with a shared obj resource. The resource destructor will only be called when all binaries are garbage collected.
Deprecated:
This function aborts on out of memory. Use memory_erl_nif_env_ensure_free followed by term_from_resource_binary instead.
Parameters:
env – current environment
obj – resource
data – binary data to encapsulate
size – size of the data
Returns:
a new binary term
int enif_select(ErlNifEnv *env, ErlNifEvent event, enum ErlNifSelectFlags mode, void *obj, const ErlNifPid *pid, ERL_NIF_TERM ref)
Run a POSIX-like select on a given object (event) and send a message when the object is readable or writable.
Actual implementation is platform dependent and platforms may not implement this feature.
On generic_unix, this is currently implemented using what sys_poll_events uses, namely kqueue(2) (if available) or poll(2). Please note that kqueue(2) and poll(2) behave differently for some objects, for example for vnodes and EOF.
On esp32, this is currently implemented using poll(2).
Parameters:
env – current environment
event – event object (typically a file descriptor)
mode – select mode (ERL_NIF_SELECT_READ and/or ERL_NIF_SELECT_WRITE) optionally with ERL_NIF_SELECT_CANCEL to cancel, or ERL_NIF_SELECT_STOP to stop.
obj – resource object working as a container of the event object.
pid – process id to send a message to or NULL to use the current process (from env)
ref – reference object used in sent messages or undefined atom.
Returns:
a negative value on failure, 0 or flags on success.
int enif_select_read(ErlNifEnv *env, ErlNifEvent event, void *obj, const ErlNifPid *pid, ERL_NIF_TERM msg, ErlNifEnv *msg_env)
Variant of enif_select where sent message is msg instead of default.
Parameters:
env – current environment
event – event object (typically a file descriptor)
obj – resource object working as a container of the event object.
pid – process id to send a message to or NULL to use the current process (from env)
msg – message to send (copied).
msg_env – must be NULL.
Returns:
a negative value on failure, 0 or flags on success.
int enif_select_write(ErlNifEnv *env, ErlNifEvent event, void *obj, const ErlNifPid *pid, ERL_NIF_TERM msg, ErlNifEnv *msg_env)
Variant of enif_select where sent message is msg instead of default.
Parameters:
env – current environment
event – event object (typically a file descriptor)
obj – resource object working as a container of the event object.
pid – process id to send a message to or NULL to use the current process (from env)
msg – message to send (copied).
msg_env – must be NULL.
Returns:
a negative value on failure, 0 or flags on success.
int enif_monitor_process(ErlNifEnv *env, void *obj, const ErlNifPid *target_pid, ErlNifMonitor *mon)
Monitor a process by using a resource object.
The monitor is automatically removed after being triggered or if the associated resource is deallocated.
Parameters:
env – current environment
obj – resource to use for monitor
target_pid – process to monitor
mon – on output, monitor object (can be NULL)
Returns:
0 on success, <0 if no down callback is provided with resource (badarg), >0 if the process is no longer alive
int enif_demonitor_process(ErlNifEnv *caller_env, void *obj, const ErlNifMonitor *mon)
Unmonitor a process.
Parameters:
caller_env – current environment
obj – resource used by monitor
mon – monitor
Returns:
0 on success
int enif_compare_monitors(const ErlNifMonitor *monitor1, const ErlNifMonitor *monitor2)
compare two monitors
Parameters:
monitor1 – first monitor
monitor2 – second monitor
Returns:
0 if equals, < 0 if monitor1 < monitor2, > 0 if monitor1 > monitor2.
struct ErlNifMonitor
#include <erl_nif.h>
Collaboration diagram for ErlNifMonitor:
digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "12" [label="AtomTable" tooltip="AtomTable"] "17" [label="Context" tooltip="Context"] "1" [label="ErlNifMonitor" tooltip="ErlNifMonitor" fillcolor="#BFBFBF"] "11" [label="Ets" tooltip="Ets"] "22" [label="ExportedFunction" tooltip="ExportedFunction"] "4" [label="GlobalContext" tooltip="GlobalContext"] "13" [label="HNode" tooltip="HNode"] "14" [label="HNodeGroup" tooltip="HNodeGroup"] "18" [label="Heap" tooltip="Heap"] "19" [label="HeapFragment" tooltip="HeapFragment"] "3" [label="ListHead" tooltip="ListHead"] "23" [label="LiteralEntry" tooltip="LiteralEntry"] "21" [label="Mailbox" tooltip="Mailbox"] "7" [label="MailboxMessage" tooltip="MailboxMessage"] "6" [label="MessageQueueItem" tooltip="MessageQueueItem"] "16" [label="Module" tooltip="Module"] "9" [label="RefcBinary" tooltip="RefcBinary"] "8" [label="RefcBinaryQueueItem" tooltip="RefcBinaryQueueItem"] "2" [label="ResourceType" tooltip="ResourceType"] "5" [label="SpinLock" tooltip="SpinLock"] "10" [label="SyncList" tooltip="SyncList"] "24" [label="TimerList" tooltip="TimerList"] "20" [label="TimerListItem" tooltip="TimerListItem"] "15" [label="ValuesHashTable" tooltip="ValuesHashTable"] "12" -> "13" [dir=forward tooltip="usage"] "12" -> "14" [dir=forward tooltip="usage"] "17" -> "4" [dir=forward tooltip="usage"] "17" -> "18" [dir=forward tooltip="usage"] "17" -> "3" [dir=forward tooltip="usage"] "17" -> "20" [dir=forward tooltip="usage"] "17" -> "16" [dir=forward tooltip="usage"] "17" -> "21" [dir=forward tooltip="usage"] "17" -> "17" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "11" -> "10" [dir=forward tooltip="usage"] "4" -> "3" [dir=forward tooltip="usage"] "4" -> "5" [dir=forward tooltip="usage"] "4" -> "6" [dir=forward tooltip="usage"] "4" -> "8" [dir=forward tooltip="usage"] "4" -> "10" [dir=forward tooltip="usage"] "4" -> "11" [dir=forward tooltip="usage"] "4" -> "12" [dir=forward tooltip="usage"] "4" -> "15" [dir=forward tooltip="usage"] "4" -> "16" [dir=forward tooltip="usage"] "4" -> "24" [dir=forward tooltip="usage"] "4" -> "2" [dir=forward tooltip="usage"] "13" -> "13" [dir=forward tooltip="usage"] "14" -> "14" [dir=forward tooltip="usage"] "14" -> "13" [dir=forward tooltip="usage"] "18" -> "19" [dir=forward tooltip="usage"] "19" -> "19" [dir=forward tooltip="usage"] "3" -> "3" [dir=forward tooltip="usage"] "21" -> "7" [dir=forward tooltip="usage"] "7" -> "7" [dir=forward tooltip="usage"] "6" -> "6" [dir=forward tooltip="usage"] "6" -> "7" [dir=forward tooltip="usage"] "16" -> "17" [dir=forward tooltip="usage"] "16" -> "22" [dir=forward tooltip="usage"] "16" -> "23" [dir=forward tooltip="usage"] "9" -> "3" [dir=forward tooltip="usage"] "9" -> "2" [dir=forward tooltip="usage"] "8" -> "8" [dir=forward tooltip="usage"] "8" -> "9" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "2" -> "4" [dir=forward tooltip="usage"] "2" -> "10" [dir=forward tooltip="usage"] "10" -> "3" [dir=forward tooltip="usage"] "24" -> "3" [dir=forward tooltip="usage"] "20" -> "3" [dir=forward tooltip="usage"] "15" -> "13" [dir=forward tooltip="usage"] }
Opaque monitor type.
Public Members
struct ResourceType *resource_type
uint64_t ref_ticks
struct ErlNifResourceTypeInit
#include <erl_nif.h>
Resource callbacks.
Members should be set to 0, 1 or 2 depending on provided callbacks. Callbacks can also be NULL if not used.
Public Members
int members
ErlNifResourceDtor *dtor
ErlNifResourceStop *stop
ErlNifResourceDown *down