File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / bird / lib / resource.sgml
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Aug 22 12:33:54 2017 UTC (6 years, 11 months ago) by misho
Branches: bird, MAIN
CVS tags: v1_6_8p3, v1_6_3p0, v1_6_3, HEAD
bird 1.6.3

    1: <!--
    2: 	BIRD Programmer's Guide: Resources
    3: 
    4: 	(c) 2000 Martin Mares <mj@ucw.cz>
    5: -->
    6: 
    7: <chapt>Resources
    8: 
    9: <sect>Introduction
   10: 
   11: <p>Most large software projects implemented in classical procedural
   12: programming languages usually end up with lots of code taking care
   13: of resource allocation and deallocation. Bugs in such code are often
   14: very difficult to find, because they cause only `resource leakage',
   15: that is keeping a lot of memory and other resources which nobody
   16: references to.
   17: 
   18: <p>We've tried to solve this problem by employing a resource tracking
   19: system which keeps track of all the resources allocated by all the
   20: modules of BIRD, deallocates everything automatically when a module
   21: shuts down and it is able to print out the list of resources and
   22: the corresponding modules they are allocated by.
   23: 
   24: <p>Each allocated resource (from now we'll speak about allocated
   25: resources only) is represented by a structure starting with a standard
   26: header (struct <struct/resource/) consisting of a list node (resources are
   27: often linked to various lists) and a pointer to <struct/resclass/ -- a resource
   28: class structure pointing to functions implementing generic resource
   29: operations (such as freeing of the resource) for the particular resource
   30: type.
   31: 
   32: <p>There exist the following types of resources:
   33: 
   34: <itemize>
   35: <item><it/Resource pools/ (<struct/pool/)
   36: <item><it/Memory blocks/
   37: <item><it/Linear memory pools/ (<struct/linpool/)
   38: <item><it/Slabs/ (<struct/slab/)
   39: <item><it/Events/ (<struct/event/) 
   40: <item><it/Timers/ (<struct/timer/) 
   41: <item><it/Sockets/ (<struct/socket/) 
   42: </itemize>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>