How to manage shared library lifetime through C functions

From: Seref Arikan <serefarikan(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: How to manage shared library lifetime through C functions
Date: 2014-08-04 09:54:04
Message-ID: CA+4ThdpAd=wnCHN-N-Js2kmmNMv8Er4vZY4HjoUB=xLtRCd0yQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Greetings,
I hope this is the right group to ask this question; apologies if this
should go the general or some other list.

I have multiple shared libraries that can be called from C that I'd like to
use from a C based postgresql function.

These libraries perform some expensive initialization and they require the
C code to properly release resources when the library is no longer needed.

This means that I need a mechanism to keep a session level pointer to a
library, initialize it when it is called first from a C based function and
dispose the library properly when the session ends (and terminated due to a
problem) I would like to keep the libraries available as long as the
session is alive, so multiple calls are supposed to avoid
initialization/disposal costs every time.

I could probably use a temp table as a container for the initalization and
even pointer values (sounds dirty) but I have no idea how to hook to
session end to clean up when session ends.

What would be a good strategy here?

Regards
Seref

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Albe Laurenz 2014-08-04 10:15:37 Re: How to manage shared library lifetime through C functions
Previous Message Fabien COELHO 2014-08-04 09:20:51 Re: add modulo (%) operator to pgbench