~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/drm/drm_hashtab.h

Version: ~ [ linux-6.1-rc7 ] ~ [ linux-6.0.10 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.80 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.156 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.225 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.267 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.300 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.334 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.302 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /**************************************************************************
  2  *
  3  * Copyright 2006 Tungsten Graphics, Inc., Bismack, ND. USA.
  4  * All Rights Reserved.
  5  *
  6  * Permission is hereby granted, free of charge, to any person obtaining a
  7  * copy of this software and associated documentation files (the
  8  * "Software"), to deal in the Software without restriction, including
  9  * without limitation the rights to use, copy, modify, merge, publish,
 10  * distribute, sub license, and/or sell copies of the Software, and to
 11  * permit persons to whom the Software is furnished to do so, subject to
 12  * the following conditions:
 13  *
 14  * The above copyright notice and this permission notice (including the
 15  * next paragraph) shall be included in all copies or substantial portions
 16  * of the Software.
 17  *
 18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 20  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
 21  * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
 22  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 23  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 24  * USE OR OTHER DEALINGS IN THE SOFTWARE.
 25  *
 26  *
 27  **************************************************************************/
 28 /*
 29  * Simple open hash tab implementation.
 30  *
 31  * Authors:
 32  * Thomas Hellström <thomas-at-tungstengraphics-dot-com>
 33  */
 34 
 35 #ifndef DRM_HASHTAB_H
 36 #define DRM_HASHTAB_H
 37 
 38 #include <linux/list.h>
 39 
 40 #define drm_hash_entry(_ptr, _type, _member) container_of(_ptr, _type, _member)
 41 
 42 struct drm_hash_item {
 43         struct hlist_node head;
 44         unsigned long key;
 45 };
 46 
 47 struct drm_open_hash {
 48         struct hlist_head *table;
 49         u8 order;
 50 };
 51 
 52 int drm_ht_create(struct drm_open_hash *ht, unsigned int order);
 53 int drm_ht_insert_item(struct drm_open_hash *ht, struct drm_hash_item *item);
 54 int drm_ht_just_insert_please(struct drm_open_hash *ht, struct drm_hash_item *item,
 55                               unsigned long seed, int bits, int shift,
 56                               unsigned long add);
 57 int drm_ht_find_item(struct drm_open_hash *ht, unsigned long key, struct drm_hash_item **item);
 58 
 59 void drm_ht_verbose_list(struct drm_open_hash *ht, unsigned long key);
 60 int drm_ht_remove_key(struct drm_open_hash *ht, unsigned long key);
 61 int drm_ht_remove_item(struct drm_open_hash *ht, struct drm_hash_item *item);
 62 void drm_ht_remove(struct drm_open_hash *ht);
 63 
 64 /*
 65  * RCU-safe interface
 66  *
 67  * The user of this API needs to make sure that two or more instances of the
 68  * hash table manipulation functions are never run simultaneously.
 69  * The lookup function drm_ht_find_item_rcu may, however, run simultaneously
 70  * with any of the manipulation functions as long as it's called from within
 71  * an RCU read-locked section.
 72  */
 73 #define drm_ht_insert_item_rcu drm_ht_insert_item
 74 #define drm_ht_just_insert_please_rcu drm_ht_just_insert_please
 75 #define drm_ht_remove_key_rcu drm_ht_remove_key
 76 #define drm_ht_remove_item_rcu drm_ht_remove_item
 77 #define drm_ht_find_item_rcu drm_ht_find_item
 78 
 79 #endif
 80 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp