summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorAlexis211 <alexis211@gmail.com>2010-04-05 16:56:17 +0200
committerAlexis211 <alexis211@gmail.com>2010-04-05 16:56:17 +0200
commit8d94ae49601e0e4023bcdc35191669b2c24f6c96 (patch)
tree64d625ee6aa5a897666be2768d009b2353ba97d9 /src/modules
parentb945eafa126d6a17aa8826a405df7d5d4d999008 (diff)
downloadTCE-8d94ae49601e0e4023bcdc35191669b2c24f6c96.tar.gz
TCE-8d94ae49601e0e4023bcdc35191669b2c24f6c96.zip
More work on IPC.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/manager/Makefile33
-rw-r--r--src/modules/manager/main.c23
-rw-r--r--src/modules/test/Makefile3
-rw-r--r--src/modules/test/main.c15
4 files changed, 67 insertions, 7 deletions
diff --git a/src/modules/manager/Makefile b/src/modules/manager/Makefile
new file mode 100644
index 0000000..87a9590
--- /dev/null
+++ b/src/modules/manager/Makefile
@@ -0,0 +1,33 @@
+.PHONY: clean, mrproper
+
+CC = gcc
+CFLAGS = -nostdlib -nostartfiles -nodefaultlibs -fno-builtin -fno-stack-protector -Wall -Wextra -I ../../include
+
+LD = ld
+LDFLAGS = -T ../../library/link.ld -L ../../library -Map manager.map
+
+Objects = main.o
+Outfile = manager.elf
+
+all: $(Outfile)
+ echo "* Done with $(Outfile)"
+
+rebuild: mrproper all
+
+$(Outfile): $(Objects)
+ echo "* Linking $@..."
+ $(LD) $(LDFLAGS) -o $@ $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c $< -o $@
+
+clean:
+ echo "* Removing objects..."
+ rm *.o || exit 0
+ rm *.map || exit 0
+ rm $(Objects) || exit 0
+
+mrproper: clean
+ rm *.elf || exit 0
+ rm $(Outfile) || exit 0
+
diff --git a/src/modules/manager/main.c b/src/modules/manager/main.c
new file mode 100644
index 0000000..9e23097
--- /dev/null
+++ b/src/modules/manager/main.c
@@ -0,0 +1,23 @@
+#include <gc/syscall.h>
+#include <gc/mem.h>
+#include <gc/server.h>
+#include <gm/method.h>
+
+struct method_ret handle_nothing(struct method_data *d) {
+ if (d->blocking) printk("[manager] Received a {nothing} request.\n");
+ else printk("[manager] Received a {nothing} message.\n");
+ return mr_void();
+}
+
+int main() {
+ printk("[manager] Manager module configuring...\n");
+ Server *mgr = srv_get(0);
+
+ srv_addHandler(mgr, M_NOTHING_VVVV, handle_nothing);
+
+ printk("[manager] Manager module configured : starting request handling.\n");
+ srv_handle(mgr, HA_LOOP);
+
+ printk("[manager] Manager EPIC FAIL.\n");
+ return 0;
+}
diff --git a/src/modules/test/Makefile b/src/modules/test/Makefile
index e571da9..6dd9f80 100644
--- a/src/modules/test/Makefile
+++ b/src/modules/test/Makefile
@@ -4,7 +4,7 @@ CC = gcc
CFLAGS = -nostdlib -nostartfiles -nodefaultlibs -fno-builtin -fno-stack-protector -Wall -Wextra -I ../../include
LD = ld
-LDFLAGS = -T ../../library/link.ld -L ../../library -Map main.map
+LDFLAGS = -T ../../library/link.ld -L ../../library -Map test.map
Objects = main.o
Outfile = test.elf
@@ -24,6 +24,7 @@ $(Outfile): $(Objects)
clean:
echo "* Removing objects..."
rm *.o || exit 0
+ rm *.map || exit 0
rm $(Objects) || exit 0
mrproper: clean
diff --git a/src/modules/test/main.c b/src/modules/test/main.c
index 49dc50e..148490b 100644
--- a/src/modules/test/main.c
+++ b/src/modules/test/main.c
@@ -1,6 +1,7 @@
#include <gc/syscall.h>
#include <gc/mem.h>
#include <gc/server.h>
+#include <gm/method.h>
#define FACTOR 4
@@ -15,7 +16,7 @@ struct method_ret nulhandle(struct method_data *d) {
void thread2(void* d) {
printk("[test:2] Creating new object...\n");
Server *s = srv_create();
- srv_addHandler(s, 0x00000010, nulhandle);
+ srv_addHandler(s, M_NOTHING_VVVV, nulhandle);
obj = s->id;
while (1) {
printk("[test:2] Waiting for a request...\n");
@@ -32,10 +33,12 @@ int main() {
while (obj == -1);
printk("[test:1] Object was created. Sending request...\n");
struct user_sendrequest sr;
- sr.func = 0x00000010;
+ sr.func = M_NOTHING_VVVV;
request(obj, &sr);
- printk("[test:1] Got answer. Sending message...\n");
- send_msg(obj, &sr);
+ printk("[test:1] Got answer. Now sending request to manager...\n");
+ request(1, &sr);
+ printk("[test:1] And now a message to manager...\n");
+ send_msg(1, &sr);
printk("[test:1] testing malloc and free...");
int* v = malloc(10 * sizeof(int));
@@ -52,7 +55,7 @@ int main() {
free(v); free(vv);
printk("nothing bad happened :)\n");
- printk("[test:1] HAHA !!! Death in 10 seconds!\n");
- thread_sleep(10000);
+ printk("[test:1] HAHA !!! Death of [test] in 1 seconds!\n");
+ thread_sleep(1000);
return 0;
}