/********************************************************************* * * Filename: irqueue.h * Version: 0.3 * Description: General queue implementation * Status: Experimental. * Author: Dag Brattli * Created at: Tue Jun 9 13:26:50 1998 * Modified at: Thu Oct 7 13:25:16 1999 * Modified by: Dag Brattli * * Copyright (C) 1998-1999, Aage Kvalnes * Copyright (c) 1998, Dag Brattli * All Rights Reserved. * * This code is taken from the Vortex Operating System written by Aage * Kvalnes and has been ported to Linux and Linux/IR by Dag Brattli * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * Neither Dag Brattli nor University of Tromsø admit liability nor * provide warranty for any of this software. This material is * provided "AS-IS" and at no charge. * ********************************************************************/ #include #include #ifndef IRDA_QUEUE_H #define IRDA_QUEUE_H #define NAME_SIZE 32 /* * Hash types (some flags can be xored) * See comments in irqueue.c for which one to use... */ #define HB_NOLOCK 0 /* No concurent access prevention */ #define HB_LOCK 1 /* Prevent concurent write with global lock */ /* * Hash defines */ #define HASHBIN_SIZE 8 #define HASHBIN_MASK 0x7 #ifndef IRDA_ALIGN #define IRDA_ALIGN __attribute__((aligned)) #endif #define Q_NULL { NULL, NULL, "", 0 } typedef void (*FREE_FUNC)(void *arg); struct irda_queue { struct irda_queue *q_next; struct irda_queue *q_prev; char q_name[NAME_SIZE]; long q_hash; /* Must be able to cast a (void *) */ }; typedef struct irda_queue irda_queue_t; typedef struct hashbin_t { __u32 magic; int hb_type; int hb_size; spinlock_t hb_spinlock; /* HB_LOCK - Can be used by the user */ irda_queue_t* hb_queue[HASHBIN_SIZE] IRDA_ALIGN; irda_queue_t* hb_current; } hashbin_t; hashbin_t *hashbin_new(int type); int hashbin_delete(hashbin_t* hashbin, FREE_FUNC func); int hashbin_clear(hashbin_t* hashbin, FREE_FUNC free_func); void hashbin_insert(hashbin_t* hashbin, irda_queue_t* entry, long hashv, const char* name); void* hashbin_remove(hashbin_t* hashbin, long hashv, const char* name); void* hashbin_remove_first(hashbin_t *hashbin); void* hashbin_remove_this( hashbin_t* hashbin, irda_queue_t* entry); void* hashbin_find(hashbin_t* hashbin, long hashv, const char* name); void* hashbin_lock_find(hashbin_t* hashbin, long hashv, const char* name); void* hashbin_find_next(hashbin_t* hashbin, long hashv, const char* name, void ** pnext); irda_queue_t *hashbin_get_first(hashbin_t *hashbin); irda_queue_t *hashbin_get_next(hashbin_t *hashbin); #define HASHBIN_GET_SIZE(hashbin) hashbin->hb_size #endif ='2'>2space:mode:
authorDavid S. Miller <davem@davemloft.net>2017-02-09 17:09:20 -0500
committerDavid S. Miller <davem@davemloft.net>2017-02-09 17:09:20 -0500
commit165f1cc0b5858b17cbb31312e861495f4500d9f0 (patch)
treefd3c02c461fdeb60eb1ae3ab7470fcb92ec3399e
parent15c2e102412d95af4fe88e5b28b3eba124545bbf (diff)
parent038b9404d4e2db4fbc03d5d2203abafc6e188528 (diff)
Merge branch 'qcom-emac-more-ethtool'
Timur Tabi says: ==================== net: qcom/emac: add the last ethtool functions These two patches implement the remaining two ethtool functions that are of interest to the Qualcomm EMAC driver. These are the last patches that will be submitted for the 4.11 merge window. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>