17f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* 27f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 37f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 47f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * you may not use this file except in compliance with the License. 67f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * You may obtain a copy of the License at 77f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 87f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * See the License for the specific language governing permissions and 147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * limitations under the License. 157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- includes ----------------------------------------------------------- */ 187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Context.h" 207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/MemTbl.h" 217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Functions.h" 227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ auxiliary functions } ---------------------------------------- */ 287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbs_MemTbl_memOverlap( const uint16* memPtr1A, uint32 size1A, 347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtr2A, uint32 size2A ) 357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 diffL = memPtr2A - memPtr1A; 377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( diffL >= 0 && diffL < ( int32 )size1A ) return TRUE; 387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project diffL += ( int32 )size2A; 397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( diffL >= 0 && diffL < ( int32 )size1A ) return TRUE; 407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return FALSE; 417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ constructor / destructor } ----------------------------------- */ 487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_MemTbl_init( struct bbs_Context* cpA, 547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA ) 557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < bbs_MAX_MEM_SEGS; iL++ ) 587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_MemSeg_init( cpA, &ptrA->esArrE[ iL ] ); 607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_MemSeg_init( cpA, &ptrA->ssArrE[ iL ] ); 617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->espArrE[ iL ] = NULL; 627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->esSizeE = 0; 647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssSizeE = 0; 657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_MemTbl_exit( struct bbs_Context* cpA, 707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA ) 717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < bbs_MAX_MEM_SEGS; iL++ ) 747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_MemSeg_exit( cpA, &ptrA->esArrE[ iL ] ); 767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_MemSeg_exit( cpA, &ptrA->ssArrE[ iL ] ); 777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->espArrE[ iL ] = NULL; 787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->esSizeE = 0; 807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssSizeE = 0; 817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ operators } -------------------------------------------------- */ 887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ query functions } -------------------------------------------- */ 967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbs_MemTbl_overlap( struct bbs_Context* cpA, 1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const void* memPtrA, uint32 sizeA ) 1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->esSizeE; iL++ ) 1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_MemTbl_memOverlap( ptrA->espArrE[ iL ]->memPtrE, 1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->espArrE[ iL ]->sizeE, 1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA, sizeA ) ) 1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return TRUE; 1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->ssSizeE; iL++ ) 1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_MemTbl_memOverlap( ptrA->ssArrE[ iL ].memPtrE, 1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssArrE[ iL ].sizeE, 1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA, sizeA ) ) 1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return TRUE; 1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return FALSE; 1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ modify functions } ------------------------------------------- */ 1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ I/O } -------------------------------------------------------- */ 1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ exec functions } --------------------------------------------- */ 1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_MemTbl_create( struct bbs_Context* cpA, 1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project void* memPtrA, 1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, 1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sharedSubSizeA ) 1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( sharedSubSizeA > sizeA ) 1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemTbl bbs_MemTbl_create( void* memPtrA, uint32 sizeA, uint32 sharedSubSizeA ):\n" 1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "sharedSubSizeA > sizeA" ); 1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return; 1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_MemTbl_init( cpA, ptrA ); 1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->esArrE[ 0 ] = bbs_MemSeg_create( cpA, memPtrA, sizeA - sharedSubSizeA ); 1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_TMS320C5x 1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssArrE[ 0 ] = bbs_MemSeg_createShared( cpA, ( uint16* ) ( ( int32 ) ( ( uint16* )memPtrA ) + sizeA - sharedSubSizeA ), sharedSubSizeA ); 1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssArrE[ 0 ] = bbs_MemSeg_createShared( cpA, ( uint16* )memPtrA + sizeA - sharedSubSizeA, sharedSubSizeA ); 1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->espArrE[ 0 ] = &ptrA->esArrE[ 0 ]; 1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->esSizeE = 1; 1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssSizeE = 1; 1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_MemTbl_add( struct bbs_Context* cpA, 1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project void* memPtrA, 1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, 1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 idA ) 1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->esSizeE == bbs_MAX_MEM_SEGS ) 1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "void bbs_MemTbl_add( struct bbs_MemTbl* ptrA, void* memPtrA, uint32 sizeA ):\n" 1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table is full! Increase constant bbs_MAX_MEM_SEGS" ); 1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return; 1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->esArrE[ ptrA->esSizeE ] = bbs_MemSeg_create( cpA, memPtrA, sizeA ); 1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->esArrE[ ptrA->esSizeE ].idE = idA; 1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->espArrE[ ptrA->esSizeE ] = &ptrA->esArrE[ ptrA->esSizeE ]; 1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->esSizeE++; 2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_MemTbl_addShared( struct bbs_Context* cpA, 2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project void* memPtrA, 2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, 2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 idA ) 2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->ssSizeE == bbs_MAX_MEM_SEGS ) 2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "void bbs_MemTbl_addShared( struct bbs_MemTbl* ptrA, void* memPtrA, uint32 sizeA ):\n" 2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table is full! Increase constant bbs_MAX_MEM_SEGS" ); 2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return; 2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssArrE[ ptrA->ssSizeE ] = bbs_MemSeg_createShared( cpA, memPtrA, sizeA ); 2177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssArrE[ ptrA->ssSizeE ].idE = idA; 2187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssSizeE++; 2197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_MemSeg* bbs_MemTbl_segPtr( struct bbs_Context* cpA, 2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 idA ) 2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->esSizeE == 0 ) 2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "bbs_MemTbl_segPtr(): Table contains no exclusive segments." ); 2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( idA > 0 ) 2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->esSizeE; iL++ ) 2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( idA == ptrA->espArrE[ iL ]->idE ) return ptrA->espArrE[ iL ]; 2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->esSizeE; iL++ ) 2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->espArrE[ iL ]->sizeE > 0 || 2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->espArrE[ iL ]->dynMemManagerPtrE != 0 ) 2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return ptrA->espArrE[ iL ]; 2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERR0( bbs_ERR_MEMORY_OVERFLOW, 2497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "bbs_MemTbl_segPtr(): Table contains no valid exclusive segments." ); 2507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return 0; 2517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_MemSeg* bbs_MemTbl_sharedSegPtr( struct bbs_Context* cpA, 2567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 2577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 idA ) 2587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 2607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->ssSizeE == 0 ) 2617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "bbs_MemTbl_sharedSegPtr(): Table contains no shared segments." ); 2637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 2647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( idA > 0 ) 2667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->ssSizeE; iL++ ) 2687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( idA == ptrA->ssArrE[ iL ].idE ) return &ptrA->ssArrE[ iL ]; 2707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->ssSizeE; iL++ ) 2737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->ssArrE[ iL ].sizeE > 0 || 2757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project ptrA->ssArrE[ iL ].dynMemManagerPtrE != 0 ) 2767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return &ptrA->ssArrE[ iL ]; 2787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERR0( bbs_ERR_MEMORY_OVERFLOW, 2817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "bbs_MemTbl_sharedSegPtr(): Table contains no valid shared segments." ); 2827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return 0; 2837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_MemSeg* bbs_MemTbl_fastestSegPtr( struct bbs_Context* cpA, 2887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 2897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 minSizeA ) 2907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 2927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->esSizeE; iL++ ) 2937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_MemSeg_availableSize( cpA, ptrA->espArrE[ iL ] ) >= minSizeA ) break; 2957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL == ptrA->esSizeE ) 2977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->esSizeE == 0 ) 2997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_fastestSegPtr( struct bbs_MemTbl* ptrA, uint32 minSizeA ):\n" 3017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table contains no exclusive segments" ); 3027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else 3057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERR0( bbs_ERR_MEMORY_OVERFLOW, 3077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "struct bbs_MemSeg* bbs_MemTbl_fastestSegPtr( struct bbs_MemTbl* ptrA, uint32 minSizeA ):\n" 3087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Could not find segment with sufficient free space" ); 3097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->espArrE[ iL ]->sharedE ) 3137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_fastestSegPtr( struct bbs_MemTbl* ptrA, uint32 minSizeA ):\n" 3157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table corrupt: Found shared segment in exclusive table" ); 3167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return ptrA->espArrE[ iL ]; 3207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 3217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 3237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_MemSeg* bbs_MemTbl_largestSegPtr( struct bbs_Context* cpA, 3257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA ) 3267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 3277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 3287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxIndexL = 0; 3297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxSizeL = 0; 3307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->esSizeE == 0 ) 3327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_largestSegPtr( struct bbs_MemTbl* ptrA ):\n" 3347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "No exclusive segments available" ); 3357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->esSizeE; iL++ ) 3397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeL = bbs_MemSeg_availableSize( cpA, ptrA->espArrE[ iL ] ); 3417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( sizeL > maxSizeL ) 3427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project maxSizeL = sizeL; 3447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project maxIndexL = iL; 3457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->espArrE[ maxIndexL ]->sharedE ) 3497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_largestSegPtr( struct bbs_MemTbl* ptrA ):\n" 3517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table corrupt: Found shared segment in exclusive table" ); 3527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return ptrA->espArrE[ maxIndexL ]; 3567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 3577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 3597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_MemSeg* bbs_MemTbl_fastestSharedSegPtr( struct bbs_Context* cpA, 3617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA, 3627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 minSizeA ) 3637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 3647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 3657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->ssSizeE; iL++ ) 3667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_MemSeg_availableSize( cpA, &ptrA->ssArrE[ iL ] ) >= minSizeA ) break; 3687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL == ptrA->ssSizeE ) 3707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->esSizeE == 0 ) 3727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_fastestSegPtr( struct bbs_MemTbl* ptrA, uint32 minSizeA ):\n" 3747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table contains no shared segments" ); 3757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else 3787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERR0( bbs_ERR_MEMORY_OVERFLOW, 3807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "struct bbs_MemSeg* bbs_MemTbl_fastestSharedSegPtr( struct bbs_MemTbl* ptrA, uint32 minSizeA ):\n" 3817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Could not find segment with sufficient free space" ); 3827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( !ptrA->ssArrE[ iL ].sharedE ) 3867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 3877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_fastestSharedSegPtr( struct bbs_MemTbl* ptrA, uint32 minSizeA ):\n" 3887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table corrupt: Found exclusive segment in shared table" ); 3897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 3907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 3917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return &ptrA->ssArrE[ iL ]; 3937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 3947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 3967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_MemSeg* bbs_MemTbl_largestSharedSegPtr( struct bbs_Context* cpA, 3987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* ptrA ) 3997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 4007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 4017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxIndexL = 0; 4027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxSizeL = 0; 4037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 4047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ptrA->ssSizeE == 0 ) 4057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 4067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_largestSharedSegPtr( struct bbs_MemTbl* ptrA ):\n" 4077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "No shared segments available" ); 4087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 4097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 4107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 4117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < ptrA->ssSizeE; iL++ ) 4127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 4137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeL = bbs_MemSeg_availableSize( cpA, &ptrA->ssArrE[ iL ] ); 4147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( sizeL > maxSizeL ) 4157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 4167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project maxSizeL = sizeL; 4177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project maxIndexL = iL; 4187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 4197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 4207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 4217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( !ptrA->ssArrE[ maxIndexL ].sharedE ) 4227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 4237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "struct bbs_MemSeg* bbs_MemTbl_largestSharedSegPtr( struct bbs_MemTbl* ptrA ):\n" 4247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Table corrupt: Found exclusive segment in shared table" ); 4257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return NULL; 4267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 4277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 4287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return &ptrA->ssArrE[ maxIndexL ]; 4297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 4307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 4317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 4327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 4337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 4347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 4357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 436