Chameleon Applications

Chameleon Applications Svn Source Tree

Root/branches/iFabio/i386/libsaio/allocate.c

Source at commit 214 created 13 years 5 months ago.
By ifabio, update to chameleon trunk 630, and now the pakage folder is the same as blackosx branch, also add Icon "building" into buildpkg script, and add mint theme info into the English localizable.strings.
1/*
2 * Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * Portions Copyright (c) 2003 Apple Computer, Inc. All Rights
7 * Reserved. This file contains Original Code and/or Modifications of
8 * Original Code as defined in and that are subject to the Apple Public
9 * Source License Version 2.0 (the "License"). You may not use this file
10 * except in compliance with the License. Please obtain a copy of the
11 * License at http://www.apple.com/publicsource and read it before using
12 * this file.
13 *
14 * The Original Code and all software distributed under the License are
15 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
19 * License for the specific language governing rights and limitations
20 * under the License.
21 *
22 * @APPLE_LICENSE_HEADER_END@
23 */
24
25#include "sl.h"
26#include "saio_internal.h"
27#include "bootstruct.h"
28#include "device_tree.h"
29
30static long gImageLastKernelAddr;
31
32#define kPageSize 4096
33#define RoundPage(x) ((((unsigned)(x)) + kPageSize - 1) & ~(kPageSize - 1))
34
35
36long
37AllocateMemoryRange(char * rangeName, long start, long length, long type)
38{
39 char *nameBuf;
40 uint32_t *buffer;
41
42 nameBuf = malloc(strlen(rangeName) + 1);
43 if (nameBuf == 0) return -1;
44 strcpy(nameBuf, rangeName);
45
46 buffer = malloc(2 * sizeof(uint32_t));
47 if (buffer == 0) return -1;
48
49 buffer[0] = start;
50 buffer[1] = length;
51
52 DT__AddProperty(gMemoryMapNode, nameBuf, 2 * sizeof(uint32_t), (char *)buffer);
53
54 return 0;
55}
56
57long
58AllocateKernelMemory( long inSize )
59{
60 long addr;
61
62 if (gImageLastKernelAddr == 0) {
63 gImageLastKernelAddr = RoundPage( bootArgs->kaddr +
64 bootArgs->ksize );
65 }
66 addr = gImageLastKernelAddr;
67 gImageLastKernelAddr += RoundPage(inSize);
68
69 if ( gImageLastKernelAddr >= (KERNEL_ADDR + KERNEL_LEN) ) {
70 stop ("AllocateKernelMemory error");
71 }
72
73 bootArgs->ksize = gImageLastKernelAddr - bootArgs->kaddr;
74
75 return addr;
76}
77

Archive Download this file

Revision: 214