/** * This file is part of license combination gpl version 3 license and eCos. * The corresponding license terms are below. * * gpl version 3 Licence: * * The file were developed during the student thesis "Datensammlung in Wireless * Sensor Networks fuer Autonomic Home NetworkingÒ of Thomas Kothmayr and is * included in the dissertation "Secure Data Transmission in Wireless * Sensor Networks" by Corinna Schmitt during employment at the Technische * UniversitŠt MŸnchen, Department Computer Science, Chair Network * Architectures and Services (Germany). * Copyright (C) 2013 * Authors: Thomas Kothmayr and Corinna Schmitt (schmitt[at]net.in.tum.de) * * 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, version 3 of the License * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * * eCos Licence: (http://ecos.sourceware.org) * * This file is part of eCos, the Embedded Configurable Operating System. * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009 Free Software Foundation, Inc. * * eCos 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 3 any later version. * * eCos is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with eCos; if not, write to the Free Software Foundation, Inc., 51 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * As a special exception, if other files instantiate templates or use * macros or inline functions from this file, or you compile this file and * link it with other works to produce a work based on this file, this file * does not by itself cause the resulting work to be covered by the GNU * General Public License. However the source code for this file must still * be made available in accordance with section (3) of the GNU General * Public License v2. * * This exception does not invalidate any other reasons why a work based on * this file might be covered by the GNU General Public License. * */ Interface: tos.interfaces.Pool

Interface: tos.interfaces.Pool

interface Pool<typedef t>

An allocation pool of a specific type memory objects. The Pool allows components to allocate (get) and deallocate (put) elements. The pool does not require that deallocations be items which were originally allocated. E.g., a program can create two pools of the same type and pass items between them. This allows, for example, a component to allocate a pool of message buffers and freely buffer swap them on Receive.receive events.

Author:
Philip Levis
Kyle Jamieson
Date:
$Date: 2008/06/04 03:00:31 $

Commands
command bool empty() Returns whether there any elements remaining in the pool.
command t *get() Allocate an element from the pool.
command uint8_t maxSize() Returns the maximum number of elements in the pool (the size of a full pool).
command error_t put(t *newVal) Deallocate an object, putting it back into the pool.
command uint8_t size() Returns how many elements are in the pool.

Commands - Details

empty

command bool empty()

Returns whether there any elements remaining in the pool. If empty returns TRUE, then get will return NULL. If empty returns FALSE, then get will return a pointer to an object.

Returns:
Whether the pool is empty.

get

command t *get()

Allocate an element from the pool.

Returns:
't* ONE_NOK' A pointer if the pool is not empty, NULL if the pool is empty.

maxSize

command uint8_t maxSize()

Returns the maximum number of elements in the pool (the size of a full pool).

Returns:
Maximum size.

put

command error_t put(t *newVal)

Deallocate an object, putting it back into the pool.

Parameters:
't* ONE newVal'
Returns:
SUCCESS if the entry was put in successfully, FAIL if the pool is full.

size

command uint8_t size()

Returns how many elements are in the pool. If size returns 0, empty() will return TRUE. If size returns a non-zero value, empty() will return FALSE. The return value of size is always <e; the return value of maxSize().

Returns:
How many elements are in the pool.