blob: 6a79bf31f73c5e995906e8b060ffd4decb65b308 [file] [log] [blame]
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -08001/*
2 * Copyright 2006 The Android Open Source Project
3 *
Tao Bao9c05a822016-11-04 10:52:13 -07004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080015 */
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080016
Tao Bao9c05a822016-11-04 10:52:13 -070017#ifndef _OTAUTIL_SYSUTIL
18#define _OTAUTIL_SYSUTIL
19
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080020#include <sys/types.h>
21
Tao Bao9c05a822016-11-04 10:52:13 -070022#include <vector>
Doug Zongker99916f02014-01-13 14:16:58 -080023
Tao Bao9c05a822016-11-04 10:52:13 -070024struct MappedRange {
25 void* addr;
26 size_t length;
27};
Doug Zongker99916f02014-01-13 14:16:58 -080028
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080029/*
30 * Use this to keep track of mapped segments.
31 */
Tao Bao9c05a822016-11-04 10:52:13 -070032struct MemMapping {
33 unsigned char* addr; /* start of data */
34 size_t length; /* length of data */
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080035
Tao Bao9c05a822016-11-04 10:52:13 -070036 std::vector<MappedRange> ranges;
37};
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080038
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080039/*
Doug Zongker99916f02014-01-13 14:16:58 -080040 * Map a file into a private, read-only memory segment. If 'fn'
41 * begins with an '@' character, it is a map of blocks to be mapped,
42 * otherwise it is treated as an ordinary file.
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080043 *
44 * On success, "pMap" is filled in, and zero is returned.
45 */
Doug Zongker99916f02014-01-13 14:16:58 -080046int sysMapFile(const char* fn, MemMapping* pMap);
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080047
48/*
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080049 * Release the pages associated with a shared memory segment.
50 *
51 * This does not free "pMap"; it just releases the memory.
52 */
Doug Zongker99916f02014-01-13 14:16:58 -080053void sysReleaseMap(MemMapping* pMap);
54
Tao Bao9c05a822016-11-04 10:52:13 -070055#endif // _OTAUTIL_SYSUTIL