2007-12-21 09:02:00 +03:00
|
|
|
/* -*- Mode: C; c-basic-offset:4 ; -*- */
|
2005-09-04 08:17:00 +04:00
|
|
|
/**
|
2005-11-05 22:57:48 +03:00
|
|
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
|
|
* University Research and Technology
|
|
|
|
* Corporation. All rights reserved.
|
2007-12-21 09:02:00 +03:00
|
|
|
* Copyright (c) 2004-2007 The University of Tennessee and The University
|
2005-11-05 22:57:48 +03:00
|
|
|
* of Tennessee Research Foundation. All rights
|
|
|
|
* reserved.
|
2005-09-04 08:17:00 +04:00
|
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
|
|
* University of Stuttgart. All rights reserved.
|
|
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
* All rights reserved.
|
2010-02-23 14:31:58 +03:00
|
|
|
* Copyright (c) 2009 IBM Corporation. All rights reserved.
|
2005-09-04 08:17:00 +04:00
|
|
|
* $COPYRIGHT$
|
|
|
|
*
|
|
|
|
* Additional copyrights may follow
|
|
|
|
*
|
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
/**
|
|
|
|
* @file
|
|
|
|
* Description of the Registration Cache framework
|
|
|
|
*/
|
|
|
|
#ifndef MCA_RCACHE_H
|
|
|
|
#define MCA_RCACHE_H
|
2006-02-12 04:33:29 +03:00
|
|
|
#include "opal/mca/mca.h"
|
|
|
|
#include "ompi/mca/mpool/mpool.h"
|
2005-09-14 02:06:44 +04:00
|
|
|
#include "opal/threads/mutex.h"
|
2005-09-04 08:17:00 +04:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* component initialize
|
|
|
|
*/
|
|
|
|
typedef struct mca_rcache_base_module_t* (*mca_rcache_base_component_init_fn_t)(void);
|
|
|
|
|
|
|
|
|
|
|
|
typedef int (*mca_rcache_base_module_find_fn_t) (
|
2006-12-17 15:26:41 +03:00
|
|
|
struct mca_rcache_base_module_t* rcache, void* addr, size_t size,
|
|
|
|
mca_mpool_base_registration_t **reg);
|
2005-09-04 08:17:00 +04:00
|
|
|
|
2006-12-17 15:26:41 +03:00
|
|
|
typedef int (*mca_rcache_base_module_find_all_fn_t)(
|
|
|
|
struct mca_rcache_base_module_t* rcache, void* addr, size_t size,
|
2008-01-08 11:55:42 +03:00
|
|
|
mca_mpool_base_registration_t **regs, int reg_cnt);
|
2006-12-17 15:26:41 +03:00
|
|
|
|
|
|
|
typedef int (*mca_rcache_base_module_insert_fn_t)(
|
|
|
|
struct mca_rcache_base_module_t* rcache,
|
|
|
|
mca_mpool_base_registration_t* registration, size_t limit);
|
|
|
|
|
|
|
|
typedef int (*mca_rcache_base_module_delete_fn_t)(
|
|
|
|
struct mca_rcache_base_module_t* rcache,
|
|
|
|
mca_mpool_base_registration_t* registration);
|
2005-09-04 08:17:00 +04:00
|
|
|
|
2010-02-22 14:19:15 +03:00
|
|
|
/* Do not call the clean function with the rcache lock held */
|
|
|
|
typedef int (*mca_rcache_base_module_clean_fn_t)(
|
|
|
|
struct mca_rcache_base_module_t* rcache);
|
|
|
|
|
|
|
|
|
2005-09-04 08:17:00 +04:00
|
|
|
/**
|
|
|
|
* finalize
|
|
|
|
*/
|
|
|
|
typedef void (*mca_rcache_base_module_finalize_fn_t)(
|
2006-12-17 15:26:41 +03:00
|
|
|
struct mca_rcache_base_module_t*);
|
2005-09-04 08:17:00 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* rcache component descriptor. Contains component version information and
|
|
|
|
* open/close/init functions
|
|
|
|
*/
|
|
|
|
|
2008-07-29 02:40:57 +04:00
|
|
|
struct mca_rcache_base_component_2_0_0_t{
|
2005-09-04 08:17:00 +04:00
|
|
|
mca_base_component_t rcache_version; /**< version */
|
2008-07-29 02:40:57 +04:00
|
|
|
mca_base_component_data_t rcache_data; /**<metadata */
|
2005-09-04 08:17:00 +04:00
|
|
|
mca_rcache_base_component_init_fn_t rcache_init; /**<init function */
|
|
|
|
};
|
|
|
|
|
2008-07-29 02:40:57 +04:00
|
|
|
typedef struct mca_rcache_base_component_2_0_0_t mca_rcache_base_component_2_0_0_t;
|
2005-09-04 08:17:00 +04:00
|
|
|
|
2008-07-29 02:40:57 +04:00
|
|
|
typedef struct mca_rcache_base_component_2_0_0_t mca_rcache_base_component_t;
|
2005-09-04 08:17:00 +04:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rcache module descriptor
|
|
|
|
*/
|
2006-12-17 15:26:41 +03:00
|
|
|
struct mca_rcache_base_module_t {
|
|
|
|
mca_rcache_base_component_t *rcache_component; /**< component struct */
|
|
|
|
mca_rcache_base_module_find_fn_t rcache_find;
|
|
|
|
mca_rcache_base_module_find_all_fn_t rcache_find_all;
|
|
|
|
mca_rcache_base_module_insert_fn_t rcache_insert;
|
|
|
|
mca_rcache_base_module_delete_fn_t rcache_delete;
|
2010-02-22 14:19:15 +03:00
|
|
|
mca_rcache_base_module_clean_fn_t rcache_clean;
|
2006-12-17 15:26:41 +03:00
|
|
|
mca_rcache_base_module_finalize_fn_t rcache_finalize;
|
2005-09-14 02:06:44 +04:00
|
|
|
opal_mutex_t lock;
|
2006-12-17 15:26:41 +03:00
|
|
|
};
|
|
|
|
typedef struct mca_rcache_base_module_t mca_rcache_base_module_t;
|
2005-09-08 00:37:17 +04:00
|
|
|
|
2005-09-04 08:17:00 +04:00
|
|
|
/**
|
2008-07-29 02:40:57 +04:00
|
|
|
* Macro for use in components that are of type rcache
|
2005-09-04 08:17:00 +04:00
|
|
|
*/
|
2008-07-29 02:40:57 +04:00
|
|
|
#define MCA_RCACHE_BASE_VERSION_2_0_0 \
|
|
|
|
MCA_BASE_VERSION_2_0_0, \
|
|
|
|
"rcache", 2, 0, 0
|
2005-09-04 08:17:00 +04:00
|
|
|
|
|
|
|
#endif /* MCA_RCACHE_H */
|
|
|
|
|