1/*# 2 *#Copyright 2017, Data61 3 *#Commonwealth Scientific and Industrial Research Organisation (CSIRO) 4 *#ABN 41 687 119 230. 5 *# 6 *#This software may be distributed and modified according to the terms of 7 *#the BSD 2-Clause license. Note that NO WARRANTY is provided. 8 *#See "LICENSE_BSD2.txt" for details. 9 *# 10 *#@TAG(DATA61_BSD) 11 #*/ 12#include <camkes/dataport.h> 13#include <utils/util.h> 14 15/*? macros.show_includes(me.instance.type.includes) ?*/ 16 17/*# Assign client ids and badges #*/ 18/*- set badges = namespace() -*/ 19/*- if client_ids is not undefined -*/ 20 /*- set badges.badges = client_ids.badges -*/ 21/*- else -*/ 22 /*- from 'rpc-connector.c' import allocate_badges with context -*/ 23 /*- do allocate_badges(badges) -*/ 24/*- endif -*/ 25/*- set client_id = badges.badges[me.parent.from_ends.index(me)] -*/ 26 27/*- if suffix is not defined -*/ 28 /*- set suffix = '' -*/ 29/*- endif -*/ 30 31/*- set shmem_size = configuration[me.instance.name].get("%s_shmem_size" % me.interface.name, 4096) -*/ 32/*- set shmem_section = 'from_%s' % me.interface.name -*/ 33/*- set shmem_symbol = 'from_%s_data' % me.interface.name -*/ 34/*- set shmem_name = '%s%s' % (me.interface.name, suffix) -*/ 35/*- set page_size = macros.get_page_size(shmem_size, options.architecture) -*/ 36/*- if page_size == 0 -*/ 37 /*? raise(TemplateError('Setting %s.%s_shmem_size does not meet minimum size and alignment requirements. %d must be at least %d and %d aligned' % (me.instance.name, me.interface.name, size, 4096, 4096))) ?*/ 38/*- endif -*/ 39 40/*? macros.shared_buffer_symbol(sym=shmem_symbol, shmem_size=shmem_size, page_size=page_size) ?*/ 41/*? register_shared_variable('%s_%s_data' % (me.parent.name, client_id), shmem_symbol, shmem_size, frame_size=page_size) ?*/ 42 43volatile void * /*? shmem_name ?*/ = (volatile void *) & /*? shmem_symbol ?*/; 44 45size_t /*? me.interface.name ?*/_get_size(void) { 46 return ROUND_UP_UNSAFE(/*? shmem_size ?*/, PAGE_SIZE_4K); 47} 48 49int /*? me.interface.name ?*/_wrap_ptr(dataport_ptr_t *p, void *ptr) { 50 return -1; 51} 52 53void * /*? me.interface.name ?*/_unwrap_ptr(dataport_ptr_t *p) { 54 return NULL; 55} 56