Title: C function extending postgres

#include "postgres.h"
#include "fmgr.h"
#include "proc.h"

PG_FUNCTION_INFO_V1(get_process_total);

Datum
get_process_total(PG_FUNCTION_ARGS)
{
        float ret;
        ret = proc_cpu_user() + proc_cpu_nice() + proc_cpu_system() - proc_cpu_idle();
        PG_RETURN_FLOAT4(ret);
}

Hi ,

        I'm getting the following error when attempting to call the above function, I have included the -I path when compiling, and have compiled a similar function to execute and printf to linux without a problem :

Returned by postgres:
       
        ERROR:  could not load library "/usr/lib/pgsql/processinfo.so": /usr/lib/pgsql/processinfo.so: undefined symbol: proc_cpu_idle

Compiling:
        cc -g -I /usr/local/pgsql/include -I /usr/local/pgsql/include/server -I /usr/local/include -fpic -c processinfo.c

        cc -g -I /usr/local/pgsql/include -I /usr/local/pgsql/include/server -I /usr/local/include -shared -o processinfo.so processinfo.o

Here is the postgres create function:
CREATE FUNCTION get_process_total() RETURNS float4
    AS '$libdir/processinfo', 'get_process_total'
LANGUAGE 'c' STABLE STRICT;

TEST:
select * from get_process_total()

Your help would be greatly appreciated.

Theo

______________________________________________________________________
This email, including attachments, is intended only for the addressee
and may be confidential, privileged and subject to copyright. If you
have received this email in error, please advise the sender and delete
it. If you are not the intended recipient of this email, you must not
use, copy or disclose its content to anyone. You must not copy or
communicate to others content that is confidential or subject to
copyright, unless you have the consent of the content owner.

Reply via email to