Typedefing structs is not encouraged in the kernel.
Signed-off-by: Dominic Braun <inf.braun@fau.de>
Signed-off-by: Tobias Büttner <tobias.buettner@fau.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
struct completion insert_event;
struct completion remove_event;
struct completion close_event;
- VCHIQ_HEADER_T * msg_queue[MSG_QUEUE_SIZE];
+ struct vchiq_header *msg_queue[MSG_QUEUE_SIZE];
};
struct bulk_waiter_node {
static VCHIQ_STATUS_T
add_completion(VCHIQ_INSTANCE_T instance, VCHIQ_REASON_T reason,
- VCHIQ_HEADER_T *header, struct user_service *user_service,
- void *bulk_userdata)
+ struct vchiq_header *header, struct user_service *user_service,
+ void *bulk_userdata)
{
struct vchiq_completion_data *completion;
int insert;
***************************************************************************/
static VCHIQ_STATUS_T
-service_callback(VCHIQ_REASON_T reason, VCHIQ_HEADER_T *header,
- VCHIQ_SERVICE_HANDLE_T handle, void *bulk_userdata)
+service_callback(VCHIQ_REASON_T reason, struct vchiq_header *header,
+ VCHIQ_SERVICE_HANDLE_T handle, void *bulk_userdata)
{
/* How do we ensure the callback goes to the right client?
** The service_user data points to a user_service record
struct vchiq_completion_data *completion;
VCHIQ_SERVICE_T *service;
struct user_service *user_service;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
if (remove == instance->completion_insert)
break;
int msglen;
msglen = header->size +
- sizeof(VCHIQ_HEADER_T);
+ sizeof(struct vchiq_header);
/* This must be a VCHIQ-style service */
if (args.msgbufsize < msglen) {
vchiq_log_error(
case VCHIQ_IOC_DEQUEUE_MESSAGE: {
struct vchiq_dequeue_message args;
struct user_service *user_service;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
DEBUG_TRACE(DEQUEUE_MESSAGE_LINE);
if (copy_from_user
spin_lock(&msg_queue_spinlock);
while (user_service->msg_remove != user_service->msg_insert) {
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
int m = user_service->msg_remove & (MSG_QUEUE_SIZE - 1);
header = user_service->msg_queue[m];
static VCHIQ_STATUS_T
vchiq_keepalive_vchiq_callback(VCHIQ_REASON_T reason,
- VCHIQ_HEADER_T *header,
+ struct vchiq_header *header,
VCHIQ_SERVICE_HANDLE_T service_user,
void *bulk_user)
{
};
/* we require this for consistency between endpoints */
-vchiq_static_assert(sizeof(VCHIQ_HEADER_T) == 8);
-vchiq_static_assert(IS_POW2(sizeof(VCHIQ_HEADER_T)));
+vchiq_static_assert(sizeof(struct vchiq_header) == 8);
+vchiq_static_assert(IS_POW2(sizeof(struct vchiq_header)));
vchiq_static_assert(IS_POW2(VCHIQ_NUM_CURRENT_BULKS));
vchiq_static_assert(IS_POW2(VCHIQ_NUM_SERVICE_BULKS));
vchiq_static_assert(IS_POW2(VCHIQ_MAX_SERVICES));
};
static void
-release_message_sync(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header);
+release_message_sync(VCHIQ_STATE_T *state, struct vchiq_header *header);
static const char *msg_type_str(unsigned int msg_type)
{
static inline VCHIQ_STATUS_T
make_service_callback(VCHIQ_SERVICE_T *service, VCHIQ_REASON_T reason,
- VCHIQ_HEADER_T *header, void *bulk_userdata)
+ struct vchiq_header *header, void *bulk_userdata)
{
VCHIQ_STATUS_T status;
calc_stride(size_t size)
{
/* Allow room for the header */
- size += sizeof(VCHIQ_HEADER_T);
+ size += sizeof(struct vchiq_header);
/* Round up */
- return (size + sizeof(VCHIQ_HEADER_T) - 1) & ~(sizeof(VCHIQ_HEADER_T)
- - 1);
+ return (size + sizeof(struct vchiq_header) - 1) &
+ ~(sizeof(struct vchiq_header) - 1);
}
/* Called by the slot handler thread */
/* Called from queue_message, by the slot handler and application threads,
** with slot_mutex held */
-static VCHIQ_HEADER_T *
+static struct vchiq_header *
reserve_space(VCHIQ_STATE_T *state, size_t space, int is_blocking)
{
VCHIQ_SHARED_STATE_T *local = state->local;
int slot_space = VCHIQ_SLOT_SIZE - (tx_pos & VCHIQ_SLOT_MASK);
if (space > slot_space) {
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
/* Fill the remaining space with padding */
WARN_ON(state->tx_data == NULL);
- header = (VCHIQ_HEADER_T *)
+ header = (struct vchiq_header *)
(state->tx_data + (tx_pos & VCHIQ_SLOT_MASK));
header->msgid = VCHIQ_MSGID_PADDING;
- header->size = slot_space - sizeof(VCHIQ_HEADER_T);
+ header->size = slot_space - sizeof(struct vchiq_header);
tx_pos += slot_space;
}
state->local_tx_pos = tx_pos + space;
- return (VCHIQ_HEADER_T *)(state->tx_data + (tx_pos & VCHIQ_SLOT_MASK));
+ return (struct vchiq_header *)(state->tx_data +
+ (tx_pos & VCHIQ_SLOT_MASK));
}
/* Called by the recycle thread. */
pos = 0;
while (pos < VCHIQ_SLOT_SIZE) {
- VCHIQ_HEADER_T *header =
- (VCHIQ_HEADER_T *)(data + pos);
+ struct vchiq_header *header =
+ (struct vchiq_header *)(data + pos);
int msgid = header->msgid;
if (VCHIQ_MSG_TYPE(msgid) == VCHIQ_MSG_DATA) {
{
VCHIQ_SHARED_STATE_T *local;
VCHIQ_SERVICE_QUOTA_T *service_quota = NULL;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
int type = VCHIQ_MSG_TYPE(msgid);
size_t stride;
int is_blocking)
{
VCHIQ_SHARED_STATE_T *local;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
ssize_t callback_result;
local = state->local;
rmb();
- header = (VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state,
+ header = (struct vchiq_header *)SLOT_DATA_FROM_INDEX(state,
local->slot_sync);
{
static void
release_slot(VCHIQ_STATE_T *state, VCHIQ_SLOT_INFO_T *slot_info,
- VCHIQ_HEADER_T *header, VCHIQ_SERVICE_T *service)
+ struct vchiq_header *header, VCHIQ_SERVICE_T *service)
{
int release_count;
}
static int
-parse_open(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header)
+parse_open(VCHIQ_STATE_T *state, struct vchiq_header *header)
{
VCHIQ_SERVICE_T *service = NULL;
int msgid, size;
tx_pos = remote->tx_pos;
while (state->rx_pos != tx_pos) {
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
int msgid, size;
int type;
unsigned int localport, remoteport;
state->rx_info->release_count = 0;
}
- header = (VCHIQ_HEADER_T *)(state->rx_data +
+ header = (struct vchiq_header *)(state->rx_data +
(state->rx_pos & VCHIQ_SLOT_MASK));
DEBUG_VALUE(PARSE_HEADER, (int)(long)header);
msgid = header->msgid;
{
VCHIQ_STATE_T *state = (VCHIQ_STATE_T *) v;
VCHIQ_SHARED_STATE_T *local = state->local;
- VCHIQ_HEADER_T *header = (VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state,
- state->remote->slot_sync);
+ struct vchiq_header *header =
+ (struct vchiq_header *)SLOT_DATA_FROM_INDEX(state,
+ state->remote->slot_sync);
while (1) {
VCHIQ_SERVICE_T *service;
remote_event_create(&state->sync_release_event, &local->sync_release);
/* At start-of-day, the slot is empty and available */
- ((VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state, local->slot_sync))->msgid
- = VCHIQ_MSGID_PADDING;
+ ((struct vchiq_header *)
+ SLOT_DATA_FROM_INDEX(state, local->slot_sync))->msgid =
+ VCHIQ_MSGID_PADDING;
remote_event_signal_local(&state->sync_release_event, &local->sync_release);
local->debug[DEBUG_ENTRIES] = DEBUG_MAX;
/* Release any claimed messages aimed at this service */
if (service->sync) {
- VCHIQ_HEADER_T *header =
- (VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state,
+ struct vchiq_header *header =
+ (struct vchiq_header *)SLOT_DATA_FROM_INDEX(state,
state->remote->slot_sync);
if (VCHIQ_MSG_DSTPORT(header->msgid) == service->localport)
release_message_sync(state, header);
pos = 0;
while (pos < end) {
- VCHIQ_HEADER_T *header =
- (VCHIQ_HEADER_T *)(data + pos);
+ struct vchiq_header *header =
+ (struct vchiq_header *)(data + pos);
int msgid = header->msgid;
int port = VCHIQ_MSG_DSTPORT(msgid);
}
void
-vchiq_release_message(VCHIQ_SERVICE_HANDLE_T handle, VCHIQ_HEADER_T *header)
+vchiq_release_message(VCHIQ_SERVICE_HANDLE_T handle,
+ struct vchiq_header *header)
{
VCHIQ_SERVICE_T *service = find_service_by_handle(handle);
VCHIQ_SHARED_STATE_T *remote;
}
static void
-release_message_sync(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header)
+release_message_sync(VCHIQ_STATE_T *state, struct vchiq_header *header)
{
header->msgid = VCHIQ_MSGID_PADDING;
remote_event_signal(&state->remote->sync_release);
#define VCHIQ_SERVICE_HANDLE_INVALID 0
#define VCHIQ_SLOT_SIZE 4096
-#define VCHIQ_MAX_MSG_SIZE (VCHIQ_SLOT_SIZE - sizeof(VCHIQ_HEADER_T))
+#define VCHIQ_MAX_MSG_SIZE (VCHIQ_SLOT_SIZE - sizeof(struct vchiq_header))
#define VCHIQ_CHANNEL_SIZE VCHIQ_MAX_MSG_SIZE /* For backwards compatibility */
#define VCHIQ_MAKE_FOURCC(x0, x1, x2, x3) \
VCHIQ_SERVICE_OPTION_TRACE
} VCHIQ_SERVICE_OPTION_T;
-typedef struct vchiq_header_struct {
+struct vchiq_header {
/* The message identifier - opaque to applications. */
int msgid;
unsigned int size;
char data[0]; /* message */
-} VCHIQ_HEADER_T;
+};
struct vchiq_element {
const void __user *data;
typedef unsigned int VCHIQ_SERVICE_HANDLE_T;
-typedef VCHIQ_STATUS_T (*VCHIQ_CALLBACK_T)(VCHIQ_REASON_T, VCHIQ_HEADER_T *,
- VCHIQ_SERVICE_HANDLE_T, void *);
+typedef VCHIQ_STATUS_T (*VCHIQ_CALLBACK_T)(VCHIQ_REASON_T,
+ struct vchiq_header *,
+ VCHIQ_SERVICE_HANDLE_T, void *);
typedef struct vchiq_service_base_struct {
int fourcc;
void *context,
size_t size);
extern void vchiq_release_message(VCHIQ_SERVICE_HANDLE_T service,
- VCHIQ_HEADER_T *header);
+ struct vchiq_header *header);
extern VCHIQ_STATUS_T vchiq_bulk_transmit(VCHIQ_SERVICE_HANDLE_T service,
const void *data, unsigned int size, void *userdata,
VCHIQ_BULK_MODE_T mode);
struct vchiq_completion_data {
VCHIQ_REASON_T reason;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
void *service_userdata;
void *bulk_userdata;
};
VCHI_FLAGS_T flags)
{
struct shim_service *service = (struct shim_service *)handle;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
WARN_ON((flags != VCHI_FLAGS_NONE) &&
(flags != VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE));
int32_t vchi_msg_remove(VCHI_SERVICE_HANDLE_T handle)
{
struct shim_service *service = (struct shim_service *)handle;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
header = vchiu_queue_pop(&service->queue);
VCHI_FLAGS_T flags)
{
struct shim_service *service = (struct shim_service *)handle;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
WARN_ON((flags != VCHI_FLAGS_NONE) &&
(flags != VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE));
*/
vchiq_release_message((VCHIQ_SERVICE_HANDLE_T)(long)message->service,
- (VCHIQ_HEADER_T *)message->message);
+ (struct vchiq_header *)message->message);
return 0;
}
struct vchi_held_msg *message_handle)
{
struct shim_service *service = (struct shim_service *)handle;
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
WARN_ON((flags != VCHI_FLAGS_NONE) &&
(flags != VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE));
***********************************************************/
static VCHIQ_STATUS_T shim_callback(VCHIQ_REASON_T reason,
- VCHIQ_HEADER_T *header, VCHIQ_SERVICE_HANDLE_T handle, void *bulk_user)
+ struct vchiq_header *header,
+ VCHIQ_SERVICE_HANDLE_T handle,
+ void *bulk_user)
{
struct shim_service *service =
(struct shim_service *)VCHIQ_GET_SERVICE_USERDATA(handle);
init_completion(&queue->pop);
init_completion(&queue->push);
- queue->storage = kcalloc(size, sizeof(VCHIQ_HEADER_T *), GFP_KERNEL);
+ queue->storage = kcalloc(size, sizeof(struct vchiq_header *),
+ GFP_KERNEL);
if (!queue->storage) {
vchiu_queue_delete(queue);
return 0;
return queue->write == queue->read + queue->size;
}
-void vchiu_queue_push(VCHIU_QUEUE_T *queue, VCHIQ_HEADER_T *header)
+void vchiu_queue_push(VCHIU_QUEUE_T *queue, struct vchiq_header *header)
{
if (!queue->initialized)
return;
complete(&queue->push);
}
-VCHIQ_HEADER_T *vchiu_queue_peek(VCHIU_QUEUE_T *queue)
+struct vchiq_header *vchiu_queue_peek(VCHIU_QUEUE_T *queue)
{
while (queue->write == queue->read) {
if (wait_for_completion_killable(&queue->push))
return queue->storage[queue->read & (queue->size - 1)];
}
-VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue)
+struct vchiq_header *vchiu_queue_pop(VCHIU_QUEUE_T *queue)
{
- VCHIQ_HEADER_T *header;
+ struct vchiq_header *header;
while (queue->write == queue->read) {
if (wait_for_completion_killable(&queue->push))
struct completion pop;
struct completion push;
- VCHIQ_HEADER_T **storage;
+ struct vchiq_header **storage;
} VCHIU_QUEUE_T;
extern int vchiu_queue_init(VCHIU_QUEUE_T *queue, int size);
extern int vchiu_queue_is_empty(VCHIU_QUEUE_T *queue);
extern int vchiu_queue_is_full(VCHIU_QUEUE_T *queue);
-extern void vchiu_queue_push(VCHIU_QUEUE_T *queue, VCHIQ_HEADER_T *header);
+extern void vchiu_queue_push(VCHIU_QUEUE_T *queue, struct vchiq_header *header);
-extern VCHIQ_HEADER_T *vchiu_queue_peek(VCHIU_QUEUE_T *queue);
-extern VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue);
+extern struct vchiq_header *vchiu_queue_peek(VCHIU_QUEUE_T *queue);
+extern struct vchiq_header *vchiu_queue_pop(VCHIU_QUEUE_T *queue);
#endif