Commit 94b56161 authored by Matthieu Dorier's avatar Matthieu Dorier

done implementing multiplexing providers

parent c2e5c47c
...@@ -15,22 +15,55 @@ ...@@ -15,22 +15,55 @@
extern "C" { extern "C" {
#endif #endif
#define BAKE_CLIENT_NULL ((bake_client_t)NULL)
#define BAKE_TARGET_ID_NULL ((bake_target_id_t)NULL)
typedef struct bake_client* bake_client_t;
typedef struct bake_target* bake_target_id_t;
/**
* Creates a BAKE client attached to the given margo instance.
* This will effectively register the RPC needed by BAKE into
* the margo instance. The client must be freed with
* bake_client_finalize.
*
* @param[in] mid margo instance
* @param[out] client resulting bake client object
*
* @return 0 on success, -1 on failure
*/
int bake_client_init(margo_instance_id mid, bake_client_t* client);
/**
* Finalizes a BAKE client.
* WARNING: This function must not be called after Margo has been
* finalized. If you need to finalize a BAKE client when Margo is
* finalized, use margo_push_finalize_callback.
*
* @param client BAKE client to destroy
*
* @return 0 on success, -1 on failure
*/
int bake_client_finalize(bake_client_t client);
/** /**
* Obtains identifying information for a BAKE target through the provided * Obtains identifying information for a BAKE target through the provided
* remote mercury address. * remote mercury address and multiplex id.
* *
* @param [in] mid margo instance * @param [in] client BAKE client
* @param [in] dest_addr destination Mercury address * @param [in] dest_addr destination Mercury address
* @param [in] mplex_id multiplex id
* @param [out] bti BAKE target identifier * @param [out] bti BAKE target identifier
* @returns 0 on success, -1 on failure * @returns 0 on success, -1 on failure
*/ */
int bake_probe_instance( int bake_probe_instance(
margo_instance_id mid, bake_client_t client,
hg_addr_t dest_addr, hg_addr_t dest_addr,
uint8_t mplex_id,
bake_target_id_t *bti); bake_target_id_t *bti);
/** /**
* Creates a bounded-size BAKE data region. The resulting region can be * Creates a bounded-size BAKE data region. The resulting region can be
* written using BAKE write operations, and can be persisted (once writes * written using BAKE write operations, and can be persisted (once writes
* are complete) with a a BAKE persist operation. The region is not valid * are complete) with a a BAKE persist operation. The region is not valid
* for read access until persisted. * for read access until persisted.
...@@ -204,17 +237,19 @@ int bake_proxy_read( ...@@ -204,17 +237,19 @@ int bake_proxy_read(
* *
* @param [in] bti BAKE target_identifier * @param [in] bti BAKE target_identifier
*/ */
void bake_release_instance( void bake_target_id_release(
bake_target_id_t bti); bake_target_id_t bti);
/** /**
* Shuts down a remote BAKE service (given a target ID). * Shuts down a remote BAKE service (given an address).
* * This will shutdown all the providers on the target address.
* @param [in] bti BAKE target identifier *
* @returns 0 on success, -1 on fialure * @param [in] client BAKE client
* @param [in] addr address of the server
* @returns 0 on success, -1 on failure
*/ */
int bake_shutdown_service( int bake_shutdown_service(
bake_target_id_t bti); bake_client_t client, hg_addr_t addr);
/** /**
* Issues a BAKE no-op operation. * Issues a BAKE no-op operation.
......
...@@ -15,18 +15,24 @@ ...@@ -15,18 +15,24 @@
extern "C" { extern "C" {
#endif #endif
#define BAKE_ABT_POOL_DEFAULT ABT_POOL_NULL
#define BAKE_MPLEX_ID_DEFAULT 0
#define BAKE_PROVIDER_IGNORE NULL
typedef struct bake_server_context_t* bake_provider_t;
/** /**
* Creates a BAKE pool to use for backend PMEM storage. * Creates a BAKE pool to use for backend PMEM storage.
* *
* NOTE: This function must be called on a pool before the pool * NOTE: This function must be called on a pool before the pool
* can be passed to 'bake_server_init'. * can be passed to 'bake_provider_register'.
* *
* @param[in] pool_name path to PMEM backend file * @param[in] pool_name path to PMEM backend file
* @param[in] pool_size size of the created pool * @param[in] pool_size size of the created pool
* @param[in] pool_mode mode of the created pool * @param[in] pool_mode mode of the created pool
* @returns 0 on success, -1 otherwise * @returns 0 on success, -1 otherwise
*/ */
int bake_server_makepool( int bake_makepool(
const char *pool_name, const char *pool_name,
size_t pool_size, size_t pool_size,
mode_t pool_mode); mode_t pool_mode);
...@@ -35,12 +41,18 @@ int bake_server_makepool( ...@@ -35,12 +41,18 @@ int bake_server_makepool(
* Initializes a BAKE server instance. * Initializes a BAKE server instance.
* *
* @param[in] mid Margo instance identifier * @param[in] mid Margo instance identifier
* @param[in] mplex_id Multiplex id
* @param[in] pool Pool on which to run the RPC handlers
* @param[in] pool_name path to PMEM backend file * @param[in] pool_name path to PMEM backend file
* @param[out] provider resulting provider
* @returns 0 on success, -1 otherwise * @returns 0 on success, -1 otherwise
*/ */
int bake_server_init( int bake_provider_register(
margo_instance_id mid, margo_instance_id mid,
const char *pool_name); uint32_t mplex_id,
ABT_pool pool,
const char *pool_name,
bake_provider_t* provider);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -14,14 +14,9 @@ ...@@ -14,14 +14,9 @@
extern "C" { extern "C" {
#endif #endif
/**
* Persistent, universal, opaque identifier for a BAKE target.
* Remains constant if instance is opened, closed, or migrated.
*/
typedef struct { typedef struct {
uuid_t id; uuid_t id;
} bake_target_id_t; } bake_uuid_t;
/** /**
* Persistent, opaque identifier for a region within a BAKE target. * Persistent, opaque identifier for a region within a BAKE target.
*/ */
......
This diff is collapsed.
...@@ -26,7 +26,9 @@ int main(int argc, char **argv) ...@@ -26,7 +26,9 @@ int main(int argc, char **argv)
char *svr_addr_str; char *svr_addr_str;
hg_addr_t svr_addr; hg_addr_t svr_addr;
margo_instance_id mid; margo_instance_id mid;
bake_client_t bcl;
bake_target_id_t bti; bake_target_id_t bti;
uint8_t mplex_id;
hg_return_t hret; hg_return_t hret;
int ret; int ret;
bake_region_id_t rid; bake_region_id_t rid;
...@@ -35,14 +37,14 @@ int main(int argc, char **argv) ...@@ -35,14 +37,14 @@ int main(int argc, char **argv)
int region_fd; int region_fd;
uint64_t check_size; uint64_t check_size;
if(argc != 4) if(argc != 5)
{ {
fprintf(stderr, "Usage: bake-copy-from <server addr> <identifier file> <output file>\n"); fprintf(stderr, "Usage: bake-copy-from <server addr> <mplex id> <identifier file> <output file>\n");
fprintf(stderr, " Example: ./bake-copy-from tcp://localhost:1234 /tmp/bb-copy-rid.0GjOlu /tmp/output.dat\n"); fprintf(stderr, " Example: ./bake-copy-from tcp://localhost:1234 3 /tmp/bb-copy-rid.0GjOlu /tmp/output.dat\n");
return(-1); return(-1);
} }
svr_addr_str = argv[1]; svr_addr_str = argv[1];
mplex_id = atoi(argv[2]);
/* initialize Margo using the transport portion of the server /* initialize Margo using the transport portion of the server
* address (i.e., the part before the first : character if present) * address (i.e., the part before the first : character if present)
*/ */
...@@ -56,29 +58,40 @@ int main(int argc, char **argv) ...@@ -56,29 +58,40 @@ int main(int argc, char **argv)
return -1; return -1;
} }
ret = bake_client_init(mid, &bcl);
if(ret != 0)
{
fprintf(stderr, "Error: bake_client_init()\n");
margo_finalize(mid);
return -1;
}
hret = margo_addr_lookup(mid, svr_addr_str, &svr_addr); hret = margo_addr_lookup(mid, svr_addr_str, &svr_addr);
if(hret != HG_SUCCESS) if(hret != HG_SUCCESS)
{ {
fprintf(stderr, "Error: margo_addr_lookup()\n"); fprintf(stderr, "Error: margo_addr_lookup()\n");
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
ret = bake_probe_instance(mid, svr_addr, &bti); ret = bake_probe_instance(bcl, svr_addr, mplex_id, &bti);
if(ret < 0) if(ret < 0)
{ {
fprintf(stderr, "Error: bake_probe_instance()\n"); fprintf(stderr, "Error: bake_probe_instance()\n");
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
region_fd = open(argv[2], O_RDONLY); region_fd = open(argv[3], O_RDONLY);
if(region_fd < 0) if(region_fd < 0)
{ {
perror("open rid"); perror("open rid");
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
...@@ -88,8 +101,9 @@ int main(int argc, char **argv) ...@@ -88,8 +101,9 @@ int main(int argc, char **argv)
{ {
perror("read"); perror("read");
close(region_fd); close(region_fd);
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
...@@ -99,18 +113,20 @@ int main(int argc, char **argv) ...@@ -99,18 +113,20 @@ int main(int argc, char **argv)
if(ret != 0) if(ret != 0)
{ {
fprintf(stderr, "Error: bake_get_size()\n"); fprintf(stderr, "Error: bake_get_size()\n");
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
fd = open(argv[3], O_RDWR|O_TRUNC|O_CREAT, S_IRUSR|S_IWUSR); fd = open(argv[4], O_RDWR|O_TRUNC|O_CREAT, S_IRUSR|S_IWUSR);
if(fd < 0) if(fd < 0)
{ {
perror("open output"); perror("open output");
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
...@@ -120,8 +136,9 @@ int main(int argc, char **argv) ...@@ -120,8 +136,9 @@ int main(int argc, char **argv)
{ {
perror("ftruncate"); perror("ftruncate");
close(fd); close(fd);
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
...@@ -131,8 +148,9 @@ int main(int argc, char **argv) ...@@ -131,8 +148,9 @@ int main(int argc, char **argv)
{ {
perror("mmap"); perror("mmap");
close(fd); close(fd);
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
...@@ -148,8 +166,9 @@ int main(int argc, char **argv) ...@@ -148,8 +166,9 @@ int main(int argc, char **argv)
{ {
munmap(local_region, check_size); munmap(local_region, check_size);
close(fd); close(fd);
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
fprintf(stderr, "Error: bake_read()\n"); fprintf(stderr, "Error: bake_read()\n");
return(-1); return(-1);
...@@ -157,8 +176,9 @@ int main(int argc, char **argv) ...@@ -157,8 +176,9 @@ int main(int argc, char **argv)
munmap(local_region, check_size); munmap(local_region, check_size);
close(fd); close(fd);
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(0); return(0);
......
...@@ -26,7 +26,9 @@ int main(int argc, char **argv) ...@@ -26,7 +26,9 @@ int main(int argc, char **argv)
char *svr_addr_str; char *svr_addr_str;
hg_addr_t svr_addr; hg_addr_t svr_addr;
margo_instance_id mid; margo_instance_id mid;
bake_client_t bcl;
bake_target_id_t bti; bake_target_id_t bti;
uint8_t mplex_id;
hg_return_t hret; hg_return_t hret;
int ret; int ret;
bake_region_id_t rid; bake_region_id_t rid;
...@@ -37,13 +39,14 @@ int main(int argc, char **argv) ...@@ -37,13 +39,14 @@ int main(int argc, char **argv)
char region_file[128]; char region_file[128];
uint64_t check_size; uint64_t check_size;
if(argc != 3) if(argc != 4)
{ {
fprintf(stderr, "Usage: bake-copy-to <local file> <server addr>\n"); fprintf(stderr, "Usage: bake-copy-to <local file> <server addr> <mplex id>\n");
fprintf(stderr, " Example: ./bake-copy-to /tmp/foo.dat tcp://localhost:1234\n"); fprintf(stderr, " Example: ./bake-copy-to /tmp/foo.dat tcp://localhost:1234 1\n");
return(-1); return(-1);
} }
svr_addr_str = argv[2]; svr_addr_str = argv[2];
mplex_id = atoi(argv[3]);
fd = open(argv[1], O_RDONLY); fd = open(argv[1], O_RDONLY);
if(fd < 0) if(fd < 0)
...@@ -82,20 +85,32 @@ int main(int argc, char **argv) ...@@ -82,20 +85,32 @@ int main(int argc, char **argv)
return -1; return -1;
} }
ret = bake_client_init(mid, &bcl);
if(ret != 0)
{
fprintf(stderr, "Error: bake_client_init()\n");
margo_finalize(mid);
munmap(local_region, statbuf.st_size);
close(fd);
return -1;
}
hret = margo_addr_lookup(mid, svr_addr_str, &svr_addr); hret = margo_addr_lookup(mid, svr_addr_str, &svr_addr);
if(hret != HG_SUCCESS) if(hret != HG_SUCCESS)
{ {
fprintf(stderr, "Error: margo_addr_lookup()\n"); fprintf(stderr, "Error: margo_addr_lookup()\n");
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
munmap(local_region, statbuf.st_size); munmap(local_region, statbuf.st_size);
close(fd); close(fd);
return(-1); return(-1);
} }
ret = bake_probe_instance(mid, svr_addr, &bti); ret = bake_probe_instance(bcl, svr_addr, mplex_id, &bti);
if(ret < 0) if(ret < 0)
{ {
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
munmap(local_region, statbuf.st_size); munmap(local_region, statbuf.st_size);
close(fd); close(fd);
...@@ -107,8 +122,9 @@ int main(int argc, char **argv) ...@@ -107,8 +122,9 @@ int main(int argc, char **argv)
ret = bake_create(bti, statbuf.st_size, &rid); ret = bake_create(bti, statbuf.st_size, &rid);
if(ret != 0) if(ret != 0)
{ {
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
munmap(local_region, statbuf.st_size); munmap(local_region, statbuf.st_size);
close(fd); close(fd);
...@@ -125,8 +141,9 @@ int main(int argc, char **argv) ...@@ -125,8 +141,9 @@ int main(int argc, char **argv)
statbuf.st_size); statbuf.st_size);
if(ret != 0) if(ret != 0)
{ {
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
munmap(local_region, statbuf.st_size); munmap(local_region, statbuf.st_size);
close(fd); close(fd);
...@@ -140,8 +157,9 @@ int main(int argc, char **argv) ...@@ -140,8 +157,9 @@ int main(int argc, char **argv)
ret = bake_persist(bti, rid); ret = bake_persist(bti, rid);
if(ret != 0) if(ret != 0)
{ {
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
fprintf(stderr, "Error: bake_persist()\n"); fprintf(stderr, "Error: bake_persist()\n");
return(-1); return(-1);
...@@ -151,15 +169,17 @@ int main(int argc, char **argv) ...@@ -151,15 +169,17 @@ int main(int argc, char **argv)
ret = bake_get_size(bti, rid, &check_size); ret = bake_get_size(bti, rid, &check_size);
if(ret != 0) if(ret != 0)
{ {
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
fprintf(stderr, "Error: bake_get_size()\n"); fprintf(stderr, "Error: bake_get_size()\n");
return(-1); return(-1);
} }
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
if(check_size != statbuf.st_size) if(check_size != statbuf.st_size)
......
...@@ -33,26 +33,29 @@ int main(int argc, char **argv) ...@@ -33,26 +33,29 @@ int main(int argc, char **argv)
char *svr_addr_str; char *svr_addr_str;
hg_addr_t svr_addr; hg_addr_t svr_addr;
margo_instance_id mid; margo_instance_id mid;
bake_client_t bcl;
bake_target_id_t bti; bake_target_id_t bti;
uint8_t mplex_id;
hg_return_t hret; hg_return_t hret;
int ret; int ret;
int min_size, max_size, iterations, cur_size; int min_size, max_size, iterations, cur_size;
if(argc != 5) if(argc != 6)
{ {
fprintf(stderr, "Usage: bake-latency-bench <server addr> <iterations> <min_sz> <max_sz>\n"); fprintf(stderr, "Usage: bake-latency-bench <server addr> <mplex id> <iterations> <min_sz> <max_sz>\n");
fprintf(stderr, " Example: ./bake-latency-bench tcp://localhost:1234 1000 4 32\n"); fprintf(stderr, " Example: ./bake-latency-bench tcp://localhost:1234 3 1000 4 32\n");
return(-1); return(-1);
} }
svr_addr_str = argv[1]; svr_addr_str = argv[1];
mplex_id = atoi(argv[2]);
ret = sscanf(argv[2], "%d", &iterations); ret = sscanf(argv[3], "%d", &iterations);
assert(ret == 1); assert(ret == 1);
ret = sscanf(argv[3], "%d", &min_size); ret = sscanf(argv[4], "%d", &min_size);
assert(ret == 1); assert(ret == 1);
ret = sscanf(argv[4], "%d", &max_size); ret = sscanf(argv[5], "%d", &max_size);
assert(ret == 1); assert(ret == 1);
measurement_array = malloc(sizeof(*measurement_array)*iterations); measurement_array = malloc(sizeof(*measurement_array)*iterations);
...@@ -71,19 +74,29 @@ int main(int argc, char **argv) ...@@ -71,19 +74,29 @@ int main(int argc, char **argv)
return -1; return -1;
} }
ret = bake_client_init(mid, &bcl);
if(ret != 0)
{
fprintf(stderr, "Error: bake_client_init()\n");
margo_finalize(mid);
return -1;
}
hret = margo_addr_lookup(mid, svr_addr_str, &svr_addr); hret = margo_addr_lookup(mid, svr_addr_str, &svr_addr);
if(hret != HG_SUCCESS) if(hret != HG_SUCCESS)
{ {
fprintf(stderr, "Error: margo_addr_lookup()\n"); fprintf(stderr, "Error: margo_addr_lookup()\n");
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
ret = bake_probe_instance(mid, svr_addr, &bti); ret = bake_probe_instance(bcl, svr_addr, mplex_id, &bti);
if(ret < 0) if(ret < 0)
{ {
fprintf(stderr, "Error: bake_probe_instance()\n"); fprintf(stderr, "Error: bake_probe_instance()\n");
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
return(-1); return(-1);
} }
...@@ -100,8 +113,9 @@ int main(int argc, char **argv) ...@@ -100,8 +113,9 @@ int main(int argc, char **argv)
bench_routine_print("read", cur_size, iterations, measurement_array); bench_routine_print("read", cur_size, iterations, measurement_array);
} }
bake_release_instance(bti); bake_target_id_release(bti);
margo_addr_free(mid, svr_addr); margo_addr_free(mid, svr_addr);
bake_client_finalize(bcl);
margo_finalize(mid); margo_finalize(mid);
free(measurement_array); free(measurement_array);
......
...@@ -105,7 +105,7 @@ int main(int argc, char *argv[]) ...@@ -105,7 +105,7 @@ int main(int argc, char *argv[])
parse_args(argc, argv, &opts); parse_args(argc, argv, &opts);
ret = bake_server_makepool(opts.pmem_pool, opts.pool_size, opts.pool_mode); ret = bake_makepool(opts.pmem_pool, opts.pool_size, opts.pool_mode);
return(ret); return(ret);
} }
...@@ -7,12 +7,13 @@ ...@@ -7,12 +7,13 @@
#ifndef __BAKE_RPC #ifndef __BAKE_RPC
#define __BAKE_RPC #define __BAKE_RPC
#include <uuid/uuid.h>
#include <margo.h> #include <margo.h>
#include <mercury_proc_string.h> #include <mercury_proc_string.h>
#include <bake.h> #include <bake.h>
/* encoders for BAKE-specific types */ /* encoders for BAKE-specific types */
static inline hg_return_t hg_proc_bake_target_id_t(hg_proc_t proc, bake_target_id_t *bti); static inline hg_return_t hg_proc_bake_uuid_t(hg_proc_t proc, bake_uuid_t *bti);
static inline hg_return_t hg_proc_bake_region_id_t(hg_proc_t proc, bake_region_id_t *rid); static inline hg_return_t hg_proc_bake_region_id_t(hg_proc_t proc, bake_region_id_t *rid);
/* BAKE shutdown */ /* BAKE shutdown */
...@@ -20,7 +21,7 @@ DECLARE_MARGO_RPC_HANDLER(bake_shutdown_ult) ...@@ -20,7 +21,7 @@ DECLARE_MARGO_RPC_HANDLER(bake_shutdown_ult)
/* BAKE create */ /* BAKE create */
MERCURY_GEN_PROC(bake_create_in_t, MERCURY_GEN_PROC(bake_create_in_t,
((bake_target_id_t)(bti))\ ((bake_uuid_t)(pool_id))\
((uint64_t)(region_size))) ((uint64_t)(region_size)))
MERCURY_GEN_PROC(bake_create_out_t, MERCURY_GEN_PROC(bake_create_out_t,
((int32_t)(ret))\ ((int32_t)(ret))\
...@@ -29,7 +30,7 @@ DECLARE_MARGO_RPC_HANDLER(bake_create_ult) ...@@ -29,7 +30,7 @@ DECLARE_MARGO_RPC_HANDLER(bake_create_ult)
/* BAKE write */ /* BAKE write */
MERCURY_GEN_PROC(bake_write_in_t, MERCURY_GEN_PROC(bake_write_in_t,
((bake_target_id_t)(bti))\