13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* module:          SyncML WorkSpace Manager                             */
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*                                                                       */
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* file:            WSM_SM.h                                             */
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target system:   All                                                  */
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target OS:       All                                                  */
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*                                                                       */
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Description                                                           */
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Storage Management for Workspace Manager API <BR>                     */
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Encapsulates OS dependent parts of WSM.                               */
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright Notice
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (c) Ericsson, IBM, Lotus, Matsushita Communication
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Industrial Co., Ltd., Motorola, Nokia, Openwave Systems, Inc.,
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Palm, Inc., Psion, Starfish Software, Symbian, Ltd. (2001).
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * All Rights Reserved.
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Implementation of all or part of any Specification may require
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * licenses under third party intellectual property rights,
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * including without limitation, patent rights (such a third party
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * may or may not be a Supporter). The Sponsors of the Specification
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * are not responsible and shall not be held responsible in any
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * manner for identifying or failing to identify any or all such
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * third party intellectual property rights.
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN ARE PROVIDED
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND AND ERICSSON, IBM,
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO. LTD, MOTOROLA,
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * NOKIA, PALM INC., PSION, STARFISH SOFTWARE AND ALL OTHER SYNCML
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SPONSORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SHALL ERICSSON, IBM, LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO.,
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LTD, MOTOROLA, NOKIA, PALM INC., PSION, STARFISH SOFTWARE OR ANY
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OTHER SYNCML SPONSOR BE LIABLE TO ANY PARTY FOR ANY LOSS OF
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUSINESS, OR FOR DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL,
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND IN CONNECTION WITH
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The above notice and this paragraph must be included on all copies
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * of this document that are made.
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @version  @label
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef _WSM_SM_H
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define _WSM_SM_H
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <smldef.h>
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef __ANSI_C__
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* sbuffer list */
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef struct smWinList_s {
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char               *memName;      // name of buffer
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char               *winH;         // reference to memory block
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemHandle_t         memH;         // handle of memory block
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Byte_t              locked;       // is handle locked?
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemSize_t           memSize;      // size of memory block
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  struct smWinList_s *next;         // next list item
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} smWinList_t;
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef smWinList_t *WsmSmGlobals_t;
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef __PALM_OS__
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <Pilot.h>
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* dynamic buffer array */
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef struct smPalm_s {
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Handle          smPalmH;          // reference to only memory block
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemHandle_t     smMemH;           // handle of only memory block
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Byte_t          smLocked;         // is handle locked?
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} WsmSmGlobals_t;
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef __EPOC_OS__
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* sbuffer list */
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef struct smWinList_s {
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char               *memName;      // name of buffer
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char               *winH;         // reference to memory block
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemHandle_t         memH;         // handle of memory block
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Byte_t              locked;       // is handle locked?
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  MemSize_t           memSize;      // size of memory block
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  struct smWinList_s *next;         // next list item
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} smWinList_t;
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef smWinList_t *WsmSmGlobals_t;
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smCreate
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Creates a new memory block with name memName and size memSize.
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   OS does not know memName; memSize > 0
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  memName exists with size memSize;
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  memH refers to new memory block.
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memName
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Name of new memory block
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memSize
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Size of new memory block
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OUT:     memH
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Handle to new memory block
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_USAGE, if memName is already known to the OS
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_INVALID_SIZE, if memSize <= 0
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_NOT_ENOUGH_SPACE, if available memory < memSize
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smDestroy
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smCreate (String_t memName, MemSize_t memSize, MemHandle_t *memH);
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smOpen
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Open connection to memory block with name memName.
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   OS does know memName
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  memH refers to memory block memName
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memName
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Name of memory block to open
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OUT:     memH
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Handle to opened memory block
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_PARAM, if memName is unknown
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smClose
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smOpen (String_t memName, MemHandle_t *memH);
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smClose
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Close link to memory block.
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   memH is a valid memory block handle; memH is unlocked;
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  no pointers to records are in use
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  memH is not valid anymore
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memH
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Handle to close
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_USAGE, if memH is locked
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smOpen
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smClose (MemHandle_t memH);
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smDestroy
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Remove memory block memName within OS.
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   memName is a valid memory block name;
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  memory block is not in use (i.e. no handles and
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  pointers to this memory block are in use)
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  memName is not a valid memory block name anymore
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memName
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Name of memory block to remove
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_PARAM, if memName is unknown
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_USAGE, if memory block is still locked
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smCreate
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smDestroy (String_t memName);
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smLock
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Map memory block memH to local address space.
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   memH is a valid handle; memory block is not locked
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  pMem points to memory block memH;
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  memory block is locked
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memH
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Handle to memory block
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OUT:     pMem
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Pointer to memory block memH mapped in local address space
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_PARAM, if memH is unknown
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_USAGE, if memH was already locked
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_UNSPECIFIC, if lock failed
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smUnlock
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smLock (MemHandle_t memH, MemPtr_t *pMem);
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smUnlock
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Free pointer mapped to memH memory block.
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   memH is a valid handle; memory block is locked
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  memory block is unlocked
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memH
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Handle to memory block
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_PARAM, if memH is unknown
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_USAGE, if memH was already unlocked
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_UNSPECIFIC, if unlock failed
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smLock
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smUnlock (MemHandle_t memH);
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smSetSize
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Set size of memory block memH to newSize.
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   memH is a valid handle; newSize > 0;
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *                  memory block is unlocked
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  memory block size = newSize
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memH
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Handle to memory block
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      newSize
2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          New size of memory block
2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_PARAM, if memH is unknown
2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_USAGE, if memH is locked
2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_INVALID_SIZE, if newSize <= 0
2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_NOT_ENOUGH_SPACE, if available memory < newSize
2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smGetSize
2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smSetSize (MemHandle_t memH, MemSize_t newSize);
2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/**
2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * FUNCTION: smGetSize
2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Get size of memory block memH.
2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PRE-Condition:   memH is a valid handle
2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * POST-Condition:  actSize = memory block size
2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * IN:      memH
2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Handle to memory block
2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OUT:     actSize
2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          Actual size of memory block
2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * RETURN:  SML_ERR_OK, if O.K.
2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *          SML_ERR_WRONG_PARAM, if memH is unknown
2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @see  smSetSize
2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t smGetSize (MemHandle_t memH, MemSize_t *actSize);
2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
291