<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Theoretically, you should be able to use the "upgrade" or "reload" callbacks in your NIF instead of the unload callback. It may be necessary to perform the upgrade as an app/relup to use that feature, though. Perhaps someone a bit more versed on NIF modules can shed some light.</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">At the very least you need to specify one of those two callback functions.<br>
<br>~Soup</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 21, 2014 at 1:15 PM, Attila Rajmund Nohl <span dir="ltr"><<a href="mailto:attila.r.nohl@gmail.com" target="_blank">attila.r.nohl@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<br>
I have a NIF module that uses a locks to protect a common resource.<br>
The locks are created using enif_rwlock_create in the load function<br>
and destroyed in the unload function. When I first load the Erlang<br>
module, the locks are initialized and everything is OK. When I compile<br>
the module in the same VM the first time, everything is still OK. When<br>
I compile it the second time, the old version of the module is<br>
unloaded, so unload is called. At this point I'm in trouble, because<br>
the unload function destroys the lock.<br>
<br>
I'm not quite sure how to correctly handle this situation. Somehow I<br>
should keep (or destroy/create) the locks in the upgrade step, but<br>
after the second compilation the locks are already deleted by unload.<br>
I could add a flag to the private data stating that the locks were<br>
already destroyed or not, but it feels hackish. What is the correct<br>
way?<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div>