The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/drm/drm_mm.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /**************************************************************************
    2  *
    3  * Copyright 2006-2008 Tungsten Graphics, Inc., Cedar Park, TX. 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 #include <sys/cdefs.h>
   30 __FBSDID("$FreeBSD$");
   31 
   32 /*
   33  * Authors:
   34  * Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
   35  */
   36 
   37 #ifndef _DRM_MM_H_
   38 #define _DRM_MM_H_
   39 
   40 #include "dev/drm/drm_linux_list.h"
   41 
   42 struct drm_mm_node {
   43         struct list_head fl_entry;
   44         struct list_head ml_entry;
   45         int free;
   46         unsigned long start;
   47         unsigned long size;
   48         struct drm_mm *mm;
   49         void *private;
   50 };
   51 
   52 struct drm_mm {
   53         struct list_head fl_entry;
   54         struct list_head ml_entry;
   55         struct list_head unused_nodes;
   56         int num_unused;
   57         struct mtx unused_lock;
   58 };
   59 
   60 /*
   61  * Basic range manager support (drm_mm.c)
   62  */
   63 extern struct drm_mm_node *drm_mm_get_block_generic(struct drm_mm_node *node,
   64                                                     unsigned long size,
   65                                                     unsigned alignment,
   66                                                     int atomic);
   67 static inline struct drm_mm_node *drm_mm_get_block(struct drm_mm_node *parent,
   68                                                    unsigned long size,
   69                                                    unsigned alignment)
   70 {
   71         return drm_mm_get_block_generic(parent, size, alignment, 0);
   72 }
   73 static inline struct drm_mm_node *drm_mm_get_block_atomic(struct drm_mm_node *parent,
   74                                                           unsigned long size,
   75                                                           unsigned alignment)
   76 {
   77         return drm_mm_get_block_generic(parent, size, alignment, 1);
   78 }
   79 extern void drm_mm_put_block(struct drm_mm_node *cur);
   80 extern struct drm_mm_node *drm_mm_search_free(const struct drm_mm *mm,
   81                                               unsigned long size,
   82                                               unsigned alignment,
   83                                               int best_match);
   84 extern int drm_mm_init(struct drm_mm *mm, unsigned long start,
   85                        unsigned long size);
   86 extern void drm_mm_takedown(struct drm_mm *mm);
   87 extern int drm_mm_clean(struct drm_mm *mm);
   88 extern unsigned long drm_mm_tail_space(struct drm_mm *mm);
   89 extern int drm_mm_remove_space_from_tail(struct drm_mm *mm,
   90                                          unsigned long size);
   91 extern int drm_mm_add_space_to_tail(struct drm_mm *mm,
   92                                     unsigned long size, int atomic);
   93 extern int drm_mm_pre_get(struct drm_mm *mm);
   94 
   95 static inline struct drm_mm *drm_get_mm(struct drm_mm_node *block)
   96 {
   97         return block->mm;
   98 }
   99 
  100 #endif

Cache object: bf54338db02dacbadf28ffdbc04cd1e2


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.