one TArray to normal arguments.
Signed-off-by: Adam Turowski <adam.turowski@inf.ethz.ch>
out uint8 startbus,
out uint8 endbus);
- rpc read_irq_table(in string handle,
+ rpc read_irq_table(in String handle[256],
in pci_address addr,
in uint8 bus,
out errval error,
- out string child);
+ out String child[256]);
- rpc set_device_irq(in string handle,
+ rpc set_device_irq(in String handle[2048],
in uint32 irq,
out errval error);
rpc vtd_remove_device(in uint32 seg, in uint32 bus, in uint32 dev, in uint32 funct, in cap pml4, out errval err);
rpc vtd_id_dom_add_devices(out errval err);
-
+
// More Kludge; cap retrieval for pci
// We need a designated service to maintain the physical address
// space caps (to avoid sibling errors).
out cap devframe, out errval err);
rpc mm_free_proxy(in cap devframe, in uint64 base, in uint8 sizebits, out errval err);
};
+
interface ahci_mgmt "AHCI Management Daemon" {
- rpc list(out uint8 port_ids[len]);
- rpc identify(in uint8 port_id, out uint8 identify_data[data_len]);
+ rpc list(out uint8 port_ids[len, 128]);
+ rpc identify(in uint8 port_id, out uint8 identify_data[data_len, 512]);
rpc open(in uint8 port_id, out errval status, out cap controller_mem, out uint64 offset, out uint32 capabilities);
rpc close(in uint8 port_id, out errval status);
*/
interface arrakis "Interface to arrakismon" {
- rpc spawn_arrakis_domain(in string path, in char argvbuf[argvbytes],
- in char envbuf[envbytes], out errval err, out domainid domain_id);
+ rpc spawn_arrakis_domain(in String path[2048], in char argvbuf[argvbytes, 2048],
+ in char envbuf[envbytes, 2048], out errval err, out domainid domain_id);
};
+
interface ata_rw28 "ATA read & write with 28-bit LBA" {
@ata(command=0xC8, dma_arg=buffer, dma_size=read_size, lba=start_lba)
- rpc read_dma(in uint32 read_size, in uint32 start_lba, out uint8 buffer[buffer_size]);
+ rpc read_dma(in uint32 read_size, in uint32 start_lba, out uint8 buffer[buffer_size, 2048]);
@ata(command=0xC8, dma_arg=buffer, dma_size=512, lba=lba)
- rpc read_dma_block(in uint32 lba, out uint8 buffer[buffer_size]);
+ rpc read_dma_block(in uint32 lba, out uint8 buffer[buffer_size, 2048]);
@ata(command=0xCA, dma_arg=buffer, is_write=1, lba=lba)
- rpc write_dma(in uint8 buffer[buffer_size], in uint32 lba, out errval status);
+ rpc write_dma(in uint8 buffer[buffer_size, 2048], in uint32 lba, out errval status);
@ata(command=0xEC, dma_arg=buffer, dma_size=512)
- rpc identify_device(out uint8 buffer[buffer_size]);
+ rpc identify_device(out uint8 buffer[buffer_size, 2048]);
@ata(command=0xE7)
rpc flush_cache(out errval status);
};
+
rpc new_client(out cap bulk);
- rpc get_start(in char key[key_len], out uint64 idx, out bool haveit, out uint64 transid, out uint64 size);
+ rpc get_start(in char key[key_len, 2048], out uint64 idx, out bool haveit, out uint64 transid, out uint64 size);
rpc get_stop(in uint64 transid, in uint64 idx, in uint64 length);
rpc print_stats();
};
+
message fsb_init_msg(uint8 coreid);
message fsb_empty_request();
message fsb_empty_reply();
- message fsb_buffer_request(uint8 buf[size]);
- message fsb_buffer_reply(uint8 buf[size]);
+ message fsb_buffer_request(uint8 buf[size, 2048]);
+ message fsb_buffer_reply(uint8 buf[size, 2048]);
message fsb_payload_request(int word0, int word1, int word2, int word3);
message fsb_payload_reply(int word0, int word1, int word2, int word3);
message shmc_start();
message shmc_done();
};
+
* --------
* The storage server implements a log-structured data store,
* from which data can be read or written in terms of chunks.
- * A chunk is a block of data of a specific size with a
- * unique ID. A client or directory server can read or
+ * A chunk is a block of data of a specific size with a
+ * unique ID. A client or directory server can read or
* write chunks from the storage by passing the ID of the chunk.
*/
rpc ds_create(
in OBJECT_TYPE ob_type,
in OBJECT_ACCESS_PERM ob_perm,
- in string ob_name,
+ in String ob_name[2048],
in uint64 client_id,
out object_key object);
-rpc ds_open(
+rpc ds_open(
in OBJECT_TYPE ob_type,
in OBJECT_ACCESS_PERM ob_perm,
- in string ob_name,
+ in String ob_name[2048],
in uint64 client_id,
out object_key object);
* -----------------------------------------------
* XXX TO DO: make the maintenance of replicated state
* be implicit via a consensus protocol.
- *
+ *
* Name server can broadcast current list of servers
* to all SS and DS servers in the system. This is a
* one-way notification.
*/
-message ss_notify_registered_servers(
- uint64 server);
-message ds_notify_registered_servers(
- uint64 server);
+message ss_notify_registered_servers(uint64 server);
+message ds_notify_registered_servers(uint64 server);
};
+
* tid is a transaction id, used to mark which request a given reply belongs to
*
*/
-
+
/*
rpc move(in poolid poolid,
in uint32 bufferid,
in uint32 tid,
in cap cap,
- in uint8 meta[metasize],
+ in uint8 meta[metasize, 2048],
out error error,
out uint32 tid);
*/
uint32 bufferid,
uint32 tid,
cap cap,
- uint8 meta[metasize]);
+ uint8 meta[metasize, 2048]);
message move_trusted_call(poolid poolid,
uint32 bufferid,
uint32 tid,
- uint8 meta[metasize]);
+ uint8 meta[metasize, 2048]);
message move_response(error error,
in uint32 bufferid,
in uint32 tid,
in cap cap,
- in uint8 meta[metasize],
+ in uint8 meta[metasize, 2048],
out error error,
out uint32 tid);
*/
uint32 bufferid,
uint32 tid,
cap cap,
- uint8 meta[metasize]);
+ uint8 meta[metasize, 2048]);
message copy_trusted_call(poolid poolid,
uint32 bufferid,
uint32 tid,
- uint8 meta[metasize]);
+ uint8 meta[metasize, 2048]);
message copy_response(error error,
in uint32 bufferid,
in uint32 tid,
in cap cap,
- in uint8 meta[metasize],
+ in uint8 meta[metasize, 2048],
out error error,
out uint32 tid);
*/
uint32 bufferid,
uint32 tid,
cap cap,
- uint8 meta[metasize]);
+ uint8 meta[metasize, 2048]);
message pass_trusted_call(poolid poolid,
uint32 bufferid,
uint32 tid,
- uint8 meta[metasize]);
+ uint8 meta[metasize, 2048]);
message pass_response(error error,
uint32 tid);
message release_response(error error,
uint32 tid);
};
+
*/
interface bulkbench "Bulk benchmark Interface" {
- message bulk_init(cap shared_mem);
- message bulk_init_reply();
+ message bulk_init(cap shared_mem);
+ message bulk_init_reply();
- message message_request(uint8 msg[size]);
- message message_reply();
+ message message_request(uint8 msg[size, 2048]);
+ message message_reply();
- message bulk_message_request(uint64 id, uint64 size, uint8 last_fragment);
- message bulk_message_reply(uint64 id, uint8 last_fragment);
+ message bulk_message_request(uint64 id, uint64 size, uint8 last_fragment);
+ message bulk_message_reply(uint64 id, uint8 last_fragment);
};
+
interface dist_event "dist2 Publish/Subscribe Events" {
message identify(uint64 id);
-
- message subscribed_message(uint64 id, string record);
- message watch_event(uint64 id, string record);
-
- message trigger(uint64 id, string record);
+
+ message subscribed_message(uint64 id, String record[2048]);
+ message watch_event(uint64 id, String record[2048]);
+
+ message trigger(uint64 id, String record[2048]);
};
+
// Resource control
message rsrc_join(rsrcid id, coreid coreid);
message rsrc_join_complete(rsrcid id);
- message rsrc_phase_data(rsrcid id, uint32 phase, uint8 data[len]);
+ message rsrc_phase_data(rsrcid id, uint32 phase, uint8 data[len, 2048]);
message rsrc_timer_sync(uint64 timestamp);
message rsrc_timer_sync_reply(errval err);
message multihop_routing_table_response(errval err,
coreid source_coreid,
coreid max_coreid,
- coreid to[len]);
+ coreid to[len, 2048]);
// grow the routing table to a set of desination cores, via a given forwarder
- message multihop_routing_table_grow(coreid forwarder, coreid destinations[len]);
+ message multihop_routing_table_grow(coreid forwarder, coreid destinations[len, 2048]);
// set up a new multihop virtual circuit
message bind_multihop_intermon_request(iref iref, vci sender_vci,
errval err);
message multihop_message(vci vci, uint8 direction, uint8 flags, uint32 ack,
- uint8 payload[size]);
+ uint8 payload[size, 2048]);
message multihop_cap_send(vci vci, uint8 direction, capid capid, errval err,
caprep cap, bool null_cap, coreid owner);
message forward_kcb_rm_request(uint64 kcb_base);
message forward_kcb_rm_response(errval err);
};
+
*/
interface interphi "Interface between host and card side driver" {
-
- rpc domain_lookup(in char name[length],
+
+ rpc domain_lookup(in char name[length, 2048],
out uint64 domid,
out errval msgerr);
-
- rpc domain_wait(in char name[length],
+
+ rpc domain_wait(in char name[length, 2048],
in uint64 state,
out uint64 domid,
out uint64 rstate,
out errval msgerr);
-
- rpc domain_register(in char name[length],
+
+ rpc domain_register(in char name[length, 2048],
in uint64 domid,
out errval msgerr);
-
+
/**
* \
*/
- rpc spawn(in uint8 core,
- in char cmdline[length],
+ rpc spawn(in uint8 core,
+ in char cmdline[length, 2048],
in uint8 flags,
out uint64 domainid,
out errval msgerr);
-
+
/**
- *
+ *
*/
- rpc spawn_with_cap(in uint8 core,
- in char cmdline[length],
+ rpc spawn_with_cap(in uint8 core,
+ in char cmdline[length, 2048],
in uint8 flags,
in uint64 cap_base,
in uint8 cap_size_bits,
out uint64 domainid,
out errval msgerr);
-
+
/**
- *
+ *
*/
- rpc kill(in uint64 domainid,
+ rpc kill(in uint64 domainid,
out errval msgerr);
-
-
+
+
/**
- *
+ *
*/
rpc bootstrap(in uint64 base,
in uint64 offset,
in uint8 xid,
in uint8 is_client,
out errval msgerr);
-
+
rpc chan_open(in uint64 source_did,
in uint64 target_did,
in uint64 usrdata,
/*
* host driver only
*/
-
-
- rpc register(in uint8 id,
+
+
+ rpc register(in uint8 id,
in uint64 local_apt_base,
- in uint64 local_apt_size,
- out errval msgerr,
+ in uint64 local_apt_size,
+ out errval msgerr,
out uint64 other_apt_base,
out uint64 other_apt_size);
-
- rpc bootstrap_remote(in uint64 base,
- in uint8 bits,
- out errval msgerr);
-};
\ No newline at end of file
+
+ rpc bootstrap_remote(in uint64 base,
+ in uint8 bits,
+ out errval msgerr);
+};
message multihop_routing_table_new(coreid max_coreid, coreid nentries);
// Subsequent messages (repeated) which each contain
// a portion of the routing table from a single core
- message multihop_routing_table_set(coreid from, coreid to[len]);
+ message multihop_routing_table_set(coreid from, coreid to[len, 128]);
// Connection set-up between monitor and client
message multihop_bind_client_request(iref iref, vci sender_vci);
// user message
message multihop_message(vci vci, uint8 direction, uint8 flags, uint32 ack,
- uint8 payload[size]);
+ uint8 payload[size, 256]);
// cap transfer
message multihop_cap_send(vci vci, uint8 direction, errval err, cap cap,
rpc get_irq_dest_cap(out cap io, out errval err);
// Resource control
- rpc rsrc_manifest(in cap dispatcher, in string manifest,
+ rpc rsrc_manifest(in cap dispatcher, in String manifest[2048],
out rsrcid id, out errval err);
rpc rsrc_join(in rsrcid id, in cap dispatcher, out errval err);
rpc rsrc_phase(in rsrcid id, in uint32 phase);
//
rpc get_identifier(out uint64 id);
rpc identify(in uint64 id, in binding_type type);
-
-
+
+
//
// Get/Set API
//
/**
* \param query Records to find.
* \param t Additional trigger to watch for future events.
- * \param output Comma separated string of record names or NULL on error.
+ * \param output Comma separated String of record names or NULL on error.
* \param tid Id of registered trigger (0 in case no trigger registered).
* \param error_code Error value of request.
*/
- rpc get_names(in string query, in trigger t, out string output,
+ rpc get_names(in String query[2048], in trigger t, out String output[2048],
out trigger_id tid, out errval error_code);
-
+
/**
* \param query Record to find.
* \param t Additional trigger to watch for future events.
* \param tid Id of registered trigger (0 in case no trigger registered).
* \param error_code Error value of request.
*/
- rpc get(in string query, in trigger t, out string output,
+ rpc get(in String query[2048], in trigger t, out String output[2048],
out trigger_id tid, out errval error_code);
-
+
/**
* \param query Record to set.
* \param mode Set mode (see getset.h).
* \param t Additional trigger to watch for future events.
* \param get Return record if it has been set.
- * \param record In case get is true and no error_code is ok
+ * \param record In case get is true and no error_code is ok
* contains record, otherwise NULL
* \param tid Id of registered trigger (0 in case no trigger registered).
* \param error_code Error value of request
*/
- rpc set(in string query, in uint64 mode, in trigger t, in bool get,
- out string record, out trigger_id tid, out errval error_code);
+ rpc set(in String query[2048], in uint64 mode, in trigger t, in bool get,
+ out String record[2048], out trigger_id tid, out errval error_code);
/**
* Find a record using an ID capability as the key/name of the record.
* \param tid Id of registered trigger (0 in case no trigger registered).
* \param error_code Error value of request.
*/
- rpc get_with_idcap(in cap idcap, in trigger t, out string output,
+ rpc get_with_idcap(in cap idcap, in trigger t, out String output[2048],
out trigger_id tid, out errval error_code);
/**
* \param tid Id of registered trigger (0 in case no trigger registered).
* \param error_code Error value of request
*/
- rpc set_with_idcap(in cap idcap, in string attributes, in uint64 mode,
- in trigger t, in bool get, out string record,
+ rpc set_with_idcap(in cap idcap, in String attributes[2048], in uint64 mode,
+ in trigger t, in bool get, out String record[2048],
out trigger_id tid, out errval error_code);
-
+
/**
* \param query Record(s) to delete.
* \param t Additional trigger to watch for future events.
* \param tid Id of registered trigger (0 in case no trigger registered).
* \param error_code Error value of request
*/
- rpc del(in string query, in trigger t, out trigger_id tid,
+ rpc del(in String query[2048], in trigger t, out trigger_id tid,
out errval error_code);
-
+
/**
* \param query
* \param t Additional trigger to watch for future events.
* \param tid Id of registered trigger (0 in case no trigger registered).
* \param error_code Error value of request.
*/
- rpc exists(in string query, in trigger t, out trigger_id tid,
+ rpc exists(in String query[2048], in trigger t, out trigger_id tid,
out errval error_code);
-
+
/**
* \brief Blocks until a record matching the provided query is registered.
*
* \param record
* \param error_code
*/
- rpc wait_for(in string query, out string record, out errval error_code);
-
+ rpc wait_for(in String query[2048], out String record[2048], out errval error_code);
+
/**
* \brief Used to remove Triggers in case they are not needed anymore.
*
- * Note that non persistent trigger are removed automatically after
+ * Note that non persistent trigger are removed automatically after
* they have fired. For persistent triggers be aware that you might
* still get a notification after the trigger has been removed because
* trigger events are sent over another binding.
* \param error_code Error of operation
*/
rpc remove_trigger(in uint64 id, out errval error_code);
-
+
//
// Publish/Subscribe API
//
-
+
/**
* \param query
* \param client_state Additional state supplied by client.
* \param id Identifier for this subscription supplied by server.
* \param error_code Status of request.
*/
- rpc subscribe(in string query, in uint64 trigger_fn, in uint64 state,
+ rpc subscribe(in String query[2048], in uint64 trigger_fn, in uint64 state,
out uint64 id, out errval error_code);
-
+
/**
* \param id Id for the subscription
* \param error_code Status of request
*/
rpc unsubscribe(in uint64 id, out errval error_code);
-
+
/**
* \param record Message to publish.
* \param error_code Status of request.
*/
- rpc publish(in string record, out errval error_code);
+ rpc publish(in String record[2048], out errval error_code);
//
// Async events (sent by server to client)
//
- message trigger(trigger_id id, uint64 trigger_fn, mode m, string record,
+ message trigger(trigger_id id, uint64 trigger_fn, mode m, String record[2048],
uint64 state);
message subscription(trigger_id id, uint64 trigger_fn, mode m,
- string record, uint64 state);
-
+ String record[2048], uint64 state);
+
//
// Backward compability with chips
//
-
+
// Simple capability storage
- rpc get_cap(in string key, out cap retcap, out errval reterr);
- rpc put_cap(in string key, in cap storecap, out errval reterr);
- rpc remove_cap(in string key, out errval reterr);
+ rpc get_cap(in String key[2048], out cap retcap, out errval reterr);
+ rpc put_cap(in String key[2048], in cap storecap, out errval reterr);
+ rpc remove_cap(in String key[2048], out errval reterr);
};
in uint32 fun,
out errval err,
out uint8 nr_allocated_bars, // Number of bars supported
- out caps_per_bar caps_per_bar);
+ out uint32 caps_per_bar0,
+ out uint32 caps_per_bar1,
+ out uint32 caps_per_bar2,
+ out uint32 caps_per_bar3,
+ out uint32 caps_per_bar4,
+ out uint32 caps_per_bar5);
/* Init legacy IO device */
rpc init_legacy_device(in uint16 iomin,
interface ping_pong "Ping-Pong async example Interface" {
// The following messages are used in the test program
- message rsrc_join_request(uint32 id);
- message rsrc_join_reply();
- message init();
- message ping(uint64 val);
- message pong(uint64 val);
+ message rsrc_join_request(uint32 id);
+ message rsrc_join_reply();
+ message init();
+ message ping(uint64 val);
+ message pong(uint64 val);
message slow_op(uint64 val);
message slow_reply(uint64 val);
- message stop();
-
- rpc testrpc(in uint64 testin, out uint64 testout);
- rpc testrpc2(in uint64 testin, out uint64 testout);
-
- rpc outoforder(in uint64 seq_in,
- out uint64 seq_out,
- in uint64 testin,
- out uint64 testout);
-
- // The following messages are not used in practice, but
- // exercise the THC Flounder back-end
-
- message str0(uint32 arg1, string s);
- message str1(uint32 arg1, string s);
- message str2(uint32 arg1, string s);
- rpc str3(in uint32 arg1, in string s);
- rpc str4(out uint32 arg1, out string s);
- rpc str5(in uint64 seq_in,
- out uint64 seq_out,
- in uint32 arg1, in string s);
- rpc str6(in uint64 seq_in,
- out uint64 seq_out,
- out uint32 arg1, out string s);
-
- message arr0(uint32 arg1, char a[l]);
- message arr1(uint32 arg1, char a[l]);
- message arr2(uint32 arg1, char a[l]);
+ message stop();
+
+ rpc testrpc(in uint64 testin, out uint64 testout);
+ rpc testrpc2(in uint64 testin, out uint64 testout);
+
+ rpc outoforder(in uint64 seq_in,
+ out uint64 seq_out,
+ in uint64 testin,
+ out uint64 testout);
+
+ // The following messages are not used in practice, but
+ // exercise the THC Flounder back-end
+
+ message str0(uint32 arg1, String s[2048]);
+ message str1(uint32 arg1, String s[2048]);
+ message str2(uint32 arg1, String s[2048]);
+ rpc str3(in uint32 arg1, in String s[2048]);
+ rpc str4(out uint32 arg1, out String s[2048]);
+ rpc str5(in uint64 seq_in,
+ out uint64 seq_out,
+ in uint32 arg1, in String s[2048]);
+ rpc str6(in uint64 seq_in,
+ out uint64 seq_out,
+ out uint32 arg1, out String s[2048]);
+
+ message arr0(uint32 arg1, char a[l, 2048]);
+ message arr1(uint32 arg1, char a[l, 2048]);
+ message arr2(uint32 arg1, char a[l, 2048]);
};
message error_reply(errval err, uint64 state);
- message message_request(uint16 coreid, uint8 msg[size]);
+ message message_request(uint16 coreid, uint8 msg[size, 2048]);
message message_reply(uint16 coreid);
message bulk_message_request(uint16 coreid, uint64 id, uint64 size,
*/
interface serial "Serial characters" {
- message output(char data[len]);
- message input(char data[len]);
+ message output(char data[len, 128]);
+ message input(char data[len, 128]);
message associate_stdin();
};
*/
interface skb "SKB RPC Interface" {
- rpc run( in string input,
- out string output,
- out string str_error,
- out int int_error);
+ rpc run( in String input[2048],
+ out String output[4096],
+ out String str_error[512],
+ out int int_error);
-
/* Used by dist2 library (move in extra interface?) */
rpc get_identifier(out uint64 id);
rpc identify(in uint64 id);
- rpc get(in string query, out string output, out string error, out errval error_code);
- rpc set(in string input, out string error, out errval error_code);
- rpc del(in string query, out errval error_code);
-
- rpc subscribe(in string query, in uint64 id, out errval err);
+ rpc get(in String query[2048], out String output[2048], out String error[2048], out errval error_code);
+ rpc set(in String input[2048], out String error[2048], out errval error_code);
+ rpc del(in String query[2048], out errval error_code);
+
+ rpc subscribe(in String query[2048], in uint64 id, out errval err);
rpc unsubscribe(in uint64 id, out errval err);
- rpc publish(in string object, out errval err);
+ rpc publish(in String object[2048], out errval err);
- rpc lock(in string object, out errval err);
- rpc unlock(in string object, out errval err);
+ rpc lock(in String object[2048], out errval err);
+ rpc unlock(in String object[2048], out errval err);
};
uint8 status;
} ps_entry;
- rpc spawn_domain(in string path, in char argvbuf[argvbytes], in char envbuf[envbytes],
+ rpc spawn_domain(in String path[2048], in char argvbuf[argvbytes, 2048], in char envbuf[envbytes, 2048],
in uint8 flags, out errval err, out domainid domain_id);
- rpc spawn_domain_with_caps(in string path, in char argvbuf[argvbytes],
- in char envbuf[envbytes], in cap inheritcn_cap,
+ rpc spawn_domain_with_caps(in String path[2048], in char argvbuf[argvbytes, 2048],
+ in char envbuf[envbytes, 2048], in cap inheritcn_cap,
in cap argcn_cap, in uint8 flags, out errval err,
out domainid domain_id);
rpc wait(in domainid domain_id, in bool nohang, out uint8 exitcode, out errval err);
// XXX: Should be domainid instead of uint8, but it's not yet supported
- rpc get_domainlist(out uint8 domains[len]);
+ rpc get_domainlist(out uint8 domains[len, 2048]);
- rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len],
+ rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len, 2048],
out errval err);
// Capability debugging
* \param buffer Buffer holding characters.
* \param length Amount of characters in the buffer.
*/
- message characters(char buffer[length]);
+ message characters(char buffer[length, 2048]);
};
* \param opt Configuration option.
* \param argument Optional argument. Interpretation depends on opt.
*/
- message configuration(option opt, string argument);
+ message configuration(option opt, String argument[2048]);
/**
* \brief Signals that a client wants to teardown a connection.
interface test "Test interface" {
message basic(uint32 arg);
- message str(uint32 arg, string s);
+ message str(uint32 arg, String s[2048]);
message caps(uint32 arg, cap cap1, cap cap2);
- message buf(uint8 buf[buflen]);
+ message buf(uint8 buf[buflen, 2048]);
};
// read the name/type/size of the i'th entry in the given directory
// (yes, there's no protection against concurrent addition/deletion)
rpc readdir(in fh dir, in uint32 idx,
- out errval err, out string name, out bool isdir, out fsize size);
+ out errval err, out String name[2048], out bool isdir, out fsize size);
// look for a named entry in the given directory, return the fh if found
- rpc lookup(in fh dir, in string name,
+ rpc lookup(in fh dir, in String name[2048],
out errval err, out fh fh, out bool isdir);
// return the type/size of the given fh
// read/write: fairly straightforward
rpc read(in fh file, in offset offset, in fsize maxlen,
- out errval err, out uint8 data[retlen]);
- rpc write(in fh file, in offset offset, in uint8 data[len],
+ out errval err, out uint8 data[retlen, 2048]);
+ rpc write(in fh file, in offset offset, in uint8 data[len, 2048],
out errval err);
// read/write using bulk data
out errval err);
// create a new file in the given directory, fail if it already exists
- rpc create(in fh dir, in string name,
+ rpc create(in fh dir, in String name[2048],
out errval err, out fh fh);
// create a new subdirectory in the given directory
- rpc mkdir(in fh dir, in string name,
+ rpc mkdir(in fh dir, in String name[2048],
out errval err, out fh fh);
// delete a file or directory
*/
interface unixsock "UNIX socket" {
- message send(uint8 msg[size]);
+ message send(uint8 msg[size, 2048]);
};
interface usb_driver "USB Drive Interface" {
-
+
message device_detach_notify();
- message transfer_done_notify(uint32 tid, uint32 error, uint8 data[length]);
-};
\ No newline at end of file
+ message transfer_done_notify(uint32 tid, uint32 error, uint8 data[length, 2048]);
+};
interface usb_manager "USB Manager Interface" {
-
+
/* transfer setup parameters, keep in sync with struct usb_transfer_setup */
typedef struct {
uint32 max_bytes; ///< maximum bytes to to transfer
uint8 endpoint; ///< the associated endpoint of the transfer
uint8 iface; ///< the itnerface to use
} setup_param;
-
- /*
+
+ /*
* ----------------------------------------------------------------------
* connecting to the USB manager
- * ----------------------------------------------------------------------
+ * ----------------------------------------------------------------------
*/
-
- rpc connect(in iref driver_iref, in uint16 init_config, out uint32 ret_error, out uint8 ret_desc[length]);
+
+ rpc connect(in iref driver_iref, in uint16 init_config, out uint32 ret_error, out uint8 ret_desc[length, 2048]);
rpc device_disconnect_notify();
-
- /*
+
+ /*
* ----------------------------------------------------------------------
* Request handling
- * ----------------------------------------------------------------------
+ * ----------------------------------------------------------------------
*/
-
- rpc request_read(in uint8 request[req_length],
- out uint8 data[data_length],
+
+ rpc request_read(in uint8 request[req_length, 2048],
+ out uint8 data[data_length, 2048],
out uint32 ret_status);
-
- rpc request_write(in uint8 request[req_length],
- in uint8 data[data_length],
+
+ rpc request_write(in uint8 request[req_length, 2048],
+ in uint8 data[data_length, 2048],
out uint32 ret_status);
-
- rpc request(in uint8 request[req_length], out uint32 ret_status);
-
-
- /*
+
+ rpc request(in uint8 request[req_length, 2048], out uint32 ret_status);
+
+
+ /*
* ----------------------------------------------------------------------
* transfer management
- * ----------------------------------------------------------------------
+ * ----------------------------------------------------------------------
*/
-
- rpc transfer_setup(in uint8 type, in setup_param params,
- out uint32 ret_error, out uint32 ret_tid);
-
+
+ rpc transfer_setup(in uint8 type, in setup_param params,
+ out uint32 ret_error, out uint32 ret_tid);
+
rpc transfer_unsetup(in uint32 tid, out uint32 ret_error);
-
+
rpc transfer_start(in uint32 tid, out uint32 ret_error);
-
+
rpc transfer_stop(in uint32 tid, out uint32 ret_error);
-
- rpc transfer_status(in uint32 tid, out uint32 ret_error,
- out uint32 ret_actlen, out uint32 ret_length,
+
+ rpc transfer_status(in uint32 tid, out uint32 ret_error,
+ out uint32 ret_actlen, out uint32 ret_length,
out uint32 ret_actframes, out uint32 ret_numframes);
-
+
rpc transfer_state(in uint32 tid, out uint32 ret_error, out uint32 ret_state);
-
+
rpc transfer_clear_stall(in uint32 tid, out uint32 ret_error);
-
- rpc transfer_done_notify(out uint32 tid, out uint32 error, out uint8 data[length]);
-
- /*
+
+ rpc transfer_done_notify(out uint32 tid, out uint32 error, out uint8 data[length, 2048]);
+
+ /*
* ----------------------------------------------------------------------
* device management
- * ----------------------------------------------------------------------
+ * ----------------------------------------------------------------------
*/
-
+
rpc device_get_speed(out uint8 ret_speed);
-
+
rpc device_get_state(out uint8 ret_state);
-
+
rpc device_suspend(out uint32 ret_error);
-
+
rpc device_resume(out uint32 ret_error);
-
+
rpc device_powersave(in uint8 powerstate, out uint32 ret_error);
-
-
-};
\ No newline at end of file
+
+
+};
*/
interface xeon_phi "Xeon Phi Messaging Interface" {
-
- rpc domain_lookup(in char name[length],
+
+ rpc domain_lookup(in char name[length, 2048],
out uint64 domid,
out errval msgerr);
-
- rpc domain_wait(in char name[length],
+
+ rpc domain_wait(in char name[length, 2048],
out uint64 domid,
out errval msgerr);
-
- rpc domain_register(in char name[length],
+
+ rpc domain_register(in char name[length, 2048],
in uint64 domid,
out errval msgerr);
-
- rpc domain_init(in domainid domain,
+
+ rpc domain_init(in domainid domain,
in coreid core,
- in char name[length],
+ in char name[length, 2048],
out errval msgerr);
-
+
/*
* Spawning of Domains
- */
-
+ */
+
/**
* \
*/
- rpc spawn(in uint8 xid,
- in uint8 core,
- in char cmdline[length],
+ rpc spawn(in uint8 xid,
+ in uint8 core,
+ in char cmdline[length, 2048],
in uint8 flags,
out uint64 domainid,
out errval msgerr);
-
- rpc spawn_with_cap(in uint8 xid,
- in uint8 core,
- in char cmdline[length],
+
+ rpc spawn_with_cap(in uint8 xid,
+ in uint8 core,
+ in char cmdline[length, 2048],
in uint8 flags,
in cap capability,
out uint64 domainid,
out errval msgerr);
-
+
rpc kill(in uint8 xid,
- in uint64 domainid,
+ in uint64 domainid,
out errval msgerr);
-
-
- rpc chan_open_request(in uint8 xphi,
- in cap msgframe,
- in uint8 type,
+
+
+ rpc chan_open_request(in uint8 xphi,
+ in cap msgframe,
+ in uint8 type,
in uint64 domain,
in uint64 usrdata,
out errval msgerr);
-
-
+
+
rpc chan_open(in uint64 domain,
in uint64 usrdata,
- in cap msgframe,
+ in cap msgframe,
in uint8 type,
out errval msgerr);
-};
\ No newline at end of file
+};
interface xmplcr "Example call reply interface" {
message mycall(int i);
- message myresponse(string s);
-};
\ No newline at end of file
+ message myresponse(String s[2048]);
+};
interface xmplmsg "Example message interface" {
message msg_ints(int i, int j);
- message msg_string(string s);
-};
\ No newline at end of file
+ message msg_string(String s[2048]);
+};
*/
interface xmplrpc "Example rpc interface" {
- rpc myrpc(in int i, out string s);
-};
\ No newline at end of file
+ rpc myrpc(in int i, out String s[2048]);
+};
/** \file
- * \brief Example interface for use with thc
+ * \brief Example interface for use with thc
*/
/*
interface xmplthc "Example thc interface" {
message mymsg(int i);
message mycall(int i);
- message myresponse(string s);
- rpc myrpc(in int i, out string s);
+ message myresponse(String s[2048]);
+ rpc myrpc(in int i, out String s[2048]);
};
in uint8 direction,
in uint64 state,
out errval msg_err,
- out uint64 state);
+ out uint64 out_state);
/**
* \brief notifies the worker domain to obtain memory from the local