source: mainline/init/init.c@ 936351c1

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 936351c1 was 936351c1, checked in by Ondrej Palkovsky <ondrap@…>, 19 years ago

Completed asynchronous IPC.
Fixed sbrk.
Cleared some unnecessary defines in malloc.
Changed u8 * to char * in list.

  • Property mode set to 100644
File size: 4.0 KB
RevLine 
[3eddaff]1/*
2 * Copyright (C) 2005 Martin Decky
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
[350514c]29#include "version.h"
[b419162]30#include <ipc.h>
[06502f7d]31#include <ns.h>
[00c4994]32#include <stdio.h>
33#include <unistd.h>
34#include <stdlib.h>
[936351c1]35
[56972c81]36/*
37static void test_printf(void)
38{
39 printf("Simple text.\n");
40 printf("Now insert '%s' string.\n","this");
41 printf("We are brave enought to print numbers like %%d = '%d'\n", 0x123456);
42 printf("And now... '%b' byte! '%w' word! '%W' Word! \n", 0x12, 0x1234, 0x1234);
43 printf(" '%Q' Q! Another '%q' q! \n", 0x1234567887654321ll, 0x1234567887654321ll);
44 printf(" '%P' with 64bit value and '%p' with 32 bit value. \n", 0x1234567887654321ll, 0x12345678 );
45 printf("Thats all, folks!\n");
46}
47*/
[936351c1]48
[00c4994]49/*
[4241683]50static void test_mremap(void)
[00c4994]51{
52 printf("Writing to good memory\n");
53 mremap(&_heap, 120000, 0);
54 printf("%P\n", ((char *)&_heap));
55 printf("%P\n", ((char *)&_heap) + 80000);
56 *(((char *)&_heap) + 80000) = 10;
57 printf("Making small\n");
58 mremap(&_heap, 16000, 0);
59 printf("Failing..\n");
60 *((&_heap) + 80000) = 10;
61
62 printf("memory done\n");
63}
64*/
65/*
66static void test_sbrk(void)
67{
68 printf("Writing to good memory\n");
69 printf("Got: %P\n", sbrk(120000));
70 printf("%P\n", ((char *)&_heap));
71 printf("%P\n", ((char *)&_heap) + 80000);
72 *(((char *)&_heap) + 80000) = 10;
73 printf("Making small, got: %P\n",sbrk(-120000));
74 printf("Testing access to heap\n");
75 _heap = 10;
76 printf("Failing..\n");
77 *((&_heap) + 80000) = 10;
78
79 printf("memory done\n");
80}
81*/
82/*
83static void test_malloc(void)
84{
85 char *data;
86
87 data = malloc(10);
88 printf("Heap: %P, data: %P\n", &_heap, data);
89 data[0] = 'a';
90 free(data);
91}
92*/
[3eddaff]93
[936351c1]94/*
95static void got_answer(void *private, int retval, ipc_data_t *data)
96{
97 printf("Retval: %d...%s...%X, %X\n", retval, private,
98 IPC_GET_ARG1(*data), IPC_GET_ARG2(*data));
99}
100static void test_async_ipc(void)
101{
102 ipc_data_t data;
103 int i;
104
105 printf("Sending ping\n");
106 ipc_call_async_2(PHONE_NS, NS_PING, 1, 0xbeefbee2,
107 "Pong1", got_answer);
108 ipc_call_async_2(PHONE_NS, NS_PING, 2, 0xbeefbee4,
109 "Pong2", got_answer);
110 ipc_call_async_2(PHONE_NS, NS_PING, 3, 0xbeefbee4,
111 "Pong3", got_answer);
112 ipc_call_async_2(PHONE_NS, NS_PING, 4, 0xbeefbee4,
113 "Pong4", got_answer);
114 ipc_call_async_2(PHONE_NS, NS_PING, 5, 0xbeefbee4,
115 "Pong5", got_answer);
116 ipc_call_async_2(PHONE_NS, NS_PING, 6, 0xbeefbee4,
117 "Pong6", got_answer);
118 printf("Waiting forever...\n");
119 for (i=0; i<100;i++)
120 printf(".");
121 printf("\n");
122 ipc_wait_for_call(&data, NULL);
123 printf("Received call???\n");
124}
125*/
126
[3eddaff]127int main(int argc, char *argv[])
128{
[936351c1]129 ipcarg_t arg1, arg2;
130
[7fc78da]131 version_print();
[b419162]132
[936351c1]133 ipc_call_sync_2(PHONE_NS, NS_PING, 0xaaaa, 0xbbbb, &arg1, &arg2);
134 printf("Pong: %P %P\n", arg1, arg2);
[7fc78da]135
[3eddaff]136 return 0;
137}
Note: See TracBrowser for help on using the repository browser.