cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

queue.h (3447B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  linux/drivers/acorn/scsi/queue.h: queue handling
      4 *
      5 *  Copyright (C) 1997 Russell King
      6 */
      7#ifndef QUEUE_H
      8#define QUEUE_H
      9
     10typedef struct {
     11	struct list_head head;
     12	struct list_head free;
     13	spinlock_t queue_lock;
     14	void *alloc;			/* start of allocated mem */
     15} Queue_t;
     16
     17/*
     18 * Function: void queue_initialise (Queue_t *queue)
     19 * Purpose : initialise a queue
     20 * Params  : queue - queue to initialise
     21 */
     22extern int queue_initialise (Queue_t *queue);
     23
     24/*
     25 * Function: void queue_free (Queue_t *queue)
     26 * Purpose : free a queue
     27 * Params  : queue - queue to free
     28 */
     29extern void queue_free (Queue_t *queue);
     30
     31/*
     32 * Function: struct scsi_cmnd *queue_remove (queue)
     33 * Purpose : removes first SCSI command from a queue
     34 * Params  : queue   - queue to remove command from
     35 * Returns : struct scsi_cmnd if successful (and a reference), or NULL if no command available
     36 */
     37extern struct scsi_cmnd *queue_remove (Queue_t *queue);
     38
     39/*
     40 * Function: struct scsi_cmnd *queue_remove_exclude_ref (queue, exclude)
     41 * Purpose : remove a SCSI command from a queue
     42 * Params  : queue   - queue to remove command from
     43 *	     exclude - array of busy LUNs
     44 * Returns : struct scsi_cmnd if successful (and a reference), or NULL if no command available
     45 */
     46extern struct scsi_cmnd *queue_remove_exclude(Queue_t *queue,
     47					      unsigned long *exclude);
     48
     49#define queue_add_cmd_ordered(queue,SCpnt) \
     50	__queue_add(queue,SCpnt,(SCpnt)->cmnd[0] == REQUEST_SENSE)
     51#define queue_add_cmd_tail(queue,SCpnt) \
     52	__queue_add(queue,SCpnt,0)
     53/*
     54 * Function: int __queue_add(Queue_t *queue, struct scsi_cmnd *SCpnt, int head)
     55 * Purpose : Add a new command onto a queue
     56 * Params  : queue - destination queue
     57 *	     SCpnt - command to add
     58 *	     head  - add command to head of queue
     59 * Returns : 0 on error, !0 on success
     60 */
     61extern int __queue_add(Queue_t *queue, struct scsi_cmnd *SCpnt, int head);
     62
     63/*
     64 * Function: struct scsi_cmnd *queue_remove_tgtluntag (queue, target, lun, tag)
     65 * Purpose : remove a SCSI command from the queue for a specified target/lun/tag
     66 * Params  : queue  - queue to remove command from
     67 *	     target - target that we want
     68 *	     lun    - lun on device
     69 *	     tag    - tag on device
     70 * Returns : struct scsi_cmnd if successful, or NULL if no command satisfies requirements
     71 */
     72extern struct scsi_cmnd *queue_remove_tgtluntag(Queue_t *queue, int target,
     73						int lun, int tag);
     74
     75/*
     76 * Function: queue_remove_all_target(queue, target)
     77 * Purpose : remove all SCSI commands from the queue for a specified target
     78 * Params  : queue  - queue to remove command from
     79 *           target - target device id
     80 * Returns : nothing
     81 */
     82extern void queue_remove_all_target(Queue_t *queue, int target);
     83
     84/*
     85 * Function: int queue_probetgtlun (queue, target, lun)
     86 * Purpose : check to see if we have a command in the queue for the specified
     87 *	     target/lun.
     88 * Params  : queue  - queue to look in
     89 *	     target - target we want to probe
     90 *	     lun    - lun on target
     91 * Returns : 0 if not found, != 0 if found
     92 */
     93extern int queue_probetgtlun (Queue_t *queue, int target, int lun);
     94
     95/*
     96 * Function: int queue_remove_cmd (Queue_t *queue, struct scsi_cmnd *SCpnt)
     97 * Purpose : remove a specific command from the queues
     98 * Params  : queue - queue to look in
     99 *	     SCpnt - command to find
    100 * Returns : 0 if not found
    101 */
    102int queue_remove_cmd(Queue_t *queue, struct scsi_cmnd *SCpnt);
    103
    104#endif /* QUEUE_H */