staging: vchi: Get rid of vchi_msg_peek()
authorNicolas Saenz Julienne <nsaenzjulienne@suse.de>
Mon, 29 Jun 2020 15:09:08 +0000 (17:09 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Jul 2020 13:47:03 +0000 (15:47 +0200)
There already is a function that covers most of the functionality
vchi_msg_peek() provides: vchi_msg_hold(). The main difference being
that the later removes the message from vchu's queue while the other
does it later on, while releasing the message.

There are no users of this function that can't be trivially converted to
vchi_msg_hold(). So, for the sake of removing duplicate code, get rid of
vchi_msg_peek().

Note that the opposite change could be performed as well. But
vchi_msg_peek()'s implementation was deemed less robust as messages have
to be released in order.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Link: https://lore.kernel.org/r/20200629150945.10720-11-nsaenzjulienne@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vc04_services/interface/vchi/vchi.h
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.h

index 1a981e9..1daef5a 100644 (file)
@@ -104,18 +104,6 @@ extern int32_t vchi_msg_dequeue(struct vchi_service_handle *handle,
                                enum vchi_flags flags);
 
 // Routine to look at a message in place.
-// The message is not dequeued, so a subsequent call to peek or dequeue
-// will return the same message.
-extern int32_t vchi_msg_peek(struct vchi_service_handle *handle,
-                            void **data,
-                            uint32_t *msg_size,
-                            enum vchi_flags flags);
-
-// Routine to remove a message after it has been read in place with peek
-// The first message on the queue is dequeued.
-extern int32_t vchi_msg_remove(struct vchi_service_handle *handle);
-
-// Routine to look at a message in place.
 // The message is dequeued, so the caller is left holding it; the descriptor is
 // filled in and must be released when the user has finished with the message.
 extern int32_t vchi_msg_hold(struct vchi_service_handle *handle,
index 75d87b6..54c2492 100644 (file)
@@ -18,70 +18,6 @@ struct shim_service {
        void *callback_param;
 };
 
-/***********************************************************
- * Name: vchi_msg_peek
- *
- * Arguments:  struct vchi_service_handle *handle,
- *             void **data,
- *             uint32_t *msg_size,
-
- *             enum vchi_flags flags
- *
- * Description: Routine to return a pointer to the current message (to allow in
- *              place processing). The message can be removed using
- *              vchi_msg_remove when you're finished
- *
- * Returns: int32_t - success == 0
- *
- ***********************************************************/
-int32_t vchi_msg_peek(struct vchi_service_handle *handle,
-                     void **data,
-                     uint32_t *msg_size,
-                     enum vchi_flags flags)
-{
-       struct shim_service *service = (struct shim_service *)handle;
-       struct vchiq_header *header;
-
-       WARN_ON((flags != VCHI_FLAGS_NONE) &&
-               (flags != VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE));
-
-       if (flags == VCHI_FLAGS_NONE)
-               if (vchiu_queue_is_empty(&service->queue))
-                       return -1;
-
-       header = vchiu_queue_peek(&service->queue);
-
-       *data = header->data;
-       *msg_size = header->size;
-
-       return 0;
-}
-EXPORT_SYMBOL(vchi_msg_peek);
-
-/***********************************************************
- * Name: vchi_msg_remove
- *
- * Arguments:  struct vchi_service_handle *handle,
- *
- * Description: Routine to remove a message (after it has been read with
- *              vchi_msg_peek)
- *
- * Returns: int32_t - success == 0
- *
- ***********************************************************/
-int32_t vchi_msg_remove(struct vchi_service_handle *handle)
-{
-       struct shim_service *service = (struct shim_service *)handle;
-       struct vchiq_header *header;
-
-       header = vchiu_queue_pop(&service->queue);
-
-       vchiq_release_message(service->handle, header);
-
-       return 0;
-}
-EXPORT_SYMBOL(vchi_msg_remove);
-
 int vchi_queue_kernel_message(struct vchi_service_handle *handle, void *data,
                               unsigned int size)
 {
index 644844d..c1c81f9 100644 (file)
@@ -55,18 +55,6 @@ void vchiu_queue_push(struct vchiu_queue *queue, struct vchiq_header *header)
        complete(&queue->push);
 }
 
-struct vchiq_header *vchiu_queue_peek(struct vchiu_queue *queue)
-{
-       while (queue->write == queue->read) {
-               if (wait_for_completion_interruptible(&queue->push))
-                       flush_signals(current);
-       }
-
-       complete(&queue->push); // We haven't removed anything from the queue.
-
-       return queue->storage[queue->read & (queue->size - 1)];
-}
-
 struct vchiq_header *vchiu_queue_pop(struct vchiu_queue *queue)
 {
        struct vchiq_header *header;
index f03a425..1c90a8d 100644 (file)
@@ -44,7 +44,6 @@ extern int vchiu_queue_is_empty(struct vchiu_queue *queue);
 extern void vchiu_queue_push(struct vchiu_queue *queue,
                             struct vchiq_header *header);
 
-extern struct vchiq_header *vchiu_queue_peek(struct vchiu_queue *queue);
 extern struct vchiq_header *vchiu_queue_pop(struct vchiu_queue *queue);
 
 #endif