int
kogmo_rtdb_objmeta_upd_stats (kogmo_rtdb_handle_t *db_h)
{
  kogmo_rtdb_objid_t oid;
  //kogmo_rtdb_obj_info_t rtdbobj_info;
  kogmo_rtdb_obj_c3_rtdb_t rtdbobj;
  kogmo_rtdb_objid_t err;
  CHK_DBH("kogmo_rtdb_objmeta_upd_stats",db_h,0);
  oid = kogmo_rtdb_obj_searchinfo (db_h, "rtdb", KOGMO_RTDB_OBJTYPE_C3_RTDB, 0, 0, 0, NULL, 1);
  if (oid<0) return oid;
  //err = kogmo_rtdb_obj_readinfo (db_h, oid, 0, &rtdbobj_info);
  //if (err<0) return err;
  err = kogmo_rtdb_obj_readdata (db_h, oid, 0, &rtdbobj, sizeof(rtdbobj));
  if (err<0) return err;
  rtdbobj.base.data_ts = kogmo_timestamp_now();
  rtdbobj.rtdb.objects_free=db_h->localdata_p->objmeta_free;
  rtdbobj.rtdb.processes_free=db_h->ipc_h.shm_p->proc_free;
  rtdbobj.rtdb.memory_free=db_h->localdata_p -> heap_free;
  err = kogmo_rtdb_obj_writedata (db_h, oid, &rtdbobj);
  if (err<0) return err;
  return 0;
}
kogmo_rtdb_objid_t
kogmo_rtdb_obj_c3_process_getprocessinfo (kogmo_rtdb_handle_t *db_h,
                                          kogmo_rtdb_objid_t proc_oid,
                                          kogmo_timestamp_t ts,
                                          kogmo_rtdb_obj_c3_process_info_t str)
{
  int err;
  kogmo_rtdb_obj_info_t om;
  kogmo_rtdb_obj_c3_process_t po;
  kogmo_rtdb_objid_t oid;

  memset(str, 0, sizeof(kogmo_rtdb_obj_c3_process_info_t));
  strcpy(str, "?");

  oid = kogmo_rtdb_obj_c3_process_searchprocessobj (db_h, ts, proc_oid);

  if ( oid < 0 )
    return oid;

  err = kogmo_rtdb_obj_readinfo ( db_h, oid, ts, &om);
  if ( err < 0 )
    return err;

  err = kogmo_rtdb_obj_readdata (db_h, oid, ts, &po, sizeof (po) );
  if ( err < 0 )
    return err;

  sprintf(str, "%s%s(%lli)", om.deleted_ts ? "D!":"", om.name,
               (long long int) om.oid);

  //sprintf(str, "%s%s [OID %lli, PID %i]", om.deleted_ts ? "D!":"", om.name,
  //             (long long int) om.oid,
  //             po.process.pid);

  return oid;
}