1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-30 08:24:11 +01:00
LibrePilot/flight/Libraries/PyMite/vm/img.h

83 lines
2.1 KiB
C

/*
# This file is Copyright 2003, 2006, 2007, 2009, 2010 Dean Hall.
#
# This file is part of the PyMite VM.
# The PyMite VM is free software: you can redistribute it and/or modify
# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 2.
#
# The PyMite VM 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.
# A copy of the GNU GENERAL PUBLIC LICENSE Version 2
# is seen in the file COPYING in this directory.
*/
#ifndef __IMG_H__
#define __IMG_H__
/**
* \file
* \brief Image header
*
* Created to eliminate a circular include
* among mem, string and obj.
*/
/** The maximum number of paths available in PmImgPaths */
#define PM_NUM_IMG_PATHS 4
typedef struct PmImgPaths_s
{
PmMemSpace_t memspace[PM_NUM_IMG_PATHS];
uint8_t const *pimg[PM_NUM_IMG_PATHS];
uint8_t pathcount;
}
PmImgPaths_t, *pPmImgPaths_t;
/**
* Code image object
*
* A type to hold code images in the heap.
* A code image with an object descriptor at the front.
* Used for storing image objects during ipm;
* the code object keeps a reference to this object.
*/
typedef struct PmCodeImgObj_s
{
/** Object descriptor */
PmObjDesc_t od;
/** Null-term? char array */
uint8_t val[1];
} PmCodeImgObj_t,
*pPmCodeImgObj_t;
/**
* Iterates over all paths in the paths array until the named module is found.
* Returns the memspace,address of the head of the module.
*
* @param pname Pointer to the name of the desired module
* @param r_memspace Return by reference the memory space of the module
* @param r_imgaddr Return by reference the address of the module's image
* @return Return status
*/
PmReturn_t img_findInPaths(pPmObj_t pname, PmMemSpace_t *r_memspace,
uint8_t const **r_imgaddr);
/**
* Appends the given memspace and address to the image path array
*
* @param memspace The memspace
* @param paddr The address
* @return Return status
*/
PmReturn_t img_appendToPath(PmMemSpace_t memspace, uint8_t const * const paddr);
#endif /* __IMG_H__ */