Erlang R15B added ErlDrvSSizeT typedef, and R16B added erl_drv_output_term function and deprecated the old equivalent. Is there a way to test for these differences with preprocessor macros in order to support older Erlang versions with the same code?
Are there macros which can be used to test Erlang version in driver C code?
185 Views Asked by Alexey Romanov At
1
There are 1 best solutions below
Related Questions in ERLANG
- erlang os:cmd() command with UTF8 binary
- Erlang syntax error unclear
- How to index a field with mongodb-erlang
- Erlang Dialyzer: only accept certain integers?
- Erlang spawning large amounts of C processes
- erlang processes and message passing architecture
- Mnesia pagination with fragmented table
- Does Erlang Have Map?
- First word of binary string erlang
- Elixir exrm release crashes on eredis start_link
- Erlang: Returning a function from a function
- How to index existing not-indexed data in riak search?
- Why do I receive a FunctionClauseError ("no function clause matching") in this Elixir program, translated from Erlang?
- How to list all the bucket types in riak?
- oauth2 authentication support in ejabberd
Related Questions in ERLANG-DRIVER
- Erlang driver erl_errno issue
- glpkerl (glpk erlang library) compile error
- How to continue last session, after network disconnect?
- Message passing between processes in erlang?
- How to run cassandra erlang client through command line?
- errors in a loop
- 'Bad Connection Handle' in aerospike ejabberd integration
- Enif_send function from created thread issue
- Sending terms instead of iolists to an Erlang driver
- Profiling linked-in drivers in Erlang
- Strange thing about mongodb-erlang driver when using replica set
- How to read erlang term from redis by using java client?
- Are there macros which can be used to test Erlang version in driver C code?
- C variadic function behavior differs from expected equivalent code in an Erlang driver
- Pre-R16B driver_async_port_key alternative
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You can use the
ERL_DRV_EXTENDED_MAJOR_VERSIONandERL_DRV_EXTENDED_MINOR_VERSIONmacro values, supplied inerl_driver.h, to make decisions about features. Whenever the driver API changes, these values are suitably incremented. These increments are always explained in the Erlang/OTP release notes.For example, Erlang/OTP R15B changed some API function parameter types from
intto a new typeErlDrvSizeTto better cope with 64-bit platforms. You can test for this and compensate for it for older pre-R15B versions using the code below:This typedef allows you to use the type
ErlDrvSizeTeven for older driver versions.As of this writing, Erlang/OTP version 17.3 and version 6.2 of the Erlang runtime system (erts) are current. For erts 6.2,
ERL_DRV_EXTENDED_MAJOR_VERSIONandERL_DRV_EXTENDED_MINOR_VERSIONhave the values 3 and 1, respectively. The changes in this Erlang/OTP commit created these version values.