Commit 610b3464 authored by Charlie Jacobsen's avatar Charlie Jacobsen Committed by Vikram Narayanan

Finished first draft of customer idl.

parent d58f894f
...@@ -14,11 +14,8 @@ ...@@ -14,11 +14,8 @@
#include "common.h" #include "common.h"
#include "dealer.h" #include "dealer.h"
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Auto buyer (LCD test)");
#ifdef CONFIG_RUN_IN_LCD #ifdef CONFIG_RUN_IN_LCD
int customer_init(void) int __customer_init(void)
#else #else
static int __init customer_init(void) static int __init customer_init(void)
#endif #endif
...@@ -26,23 +23,23 @@ static int __init customer_init(void) ...@@ -26,23 +23,23 @@ static int __init customer_init(void)
struct automobile *a; struct automobile *a;
a = dealer_buy_car(); a = dealer_buy_car();
if (!a) { if (!a) {
AU_ERR("bad car"); LCD_ERR("bad car");
return -1; return -1;
} }
AU_MSG("got a %d-door car with %d cylinders", LCD_MSG("got a %d-door car with %d cylinders",
a->doors, a->engine->cylinders); a->doors, a->engine->cylinders);
dealer_return_car(a); dealer_return_car(a);
AU_MSG("customer initialized (and done)"); LCD_MSG("customer initialized (and done)");
return 0; return 0;
} }
#ifdef CONFIG_RUN_IN_LCD #ifdef CONFIG_RUN_IN_LCD
void customer_exit(void) void __customer_exit(void)
#else #else
static void __exit customer_exit(void) static void __exit customer_exit(void)
#endif #endif
{ {
AU_MSG("customer exited"); LCD_MSG("customer exited");
} }
#ifndef CONFIG_RUN_IN_LCD #ifndef CONFIG_RUN_IN_LCD
......
...@@ -73,12 +73,14 @@ fail1: ...@@ -73,12 +73,14 @@ fail1:
* OUT: * OUT:
* lcd_r0 = ret val * lcd_r0 = ret val
* lcd_r1 = (cptr) to auto; used to refer to car in dealer space * lcd_r1 = (cptr) to auto; used to refer to car in dealer space
* lcd_r2 = (cptr) to engine inside auto
*/ */
static int * dealer_buy_car_callee(void) static int * dealer_buy_car_callee(void)
{ {
int ret; int ret;
struct automobile *a; struct automobile *a;
dsptr_t auto_dsptr; dsptr_t auto_dsptr;
dsptr_t engine_dsptr;
/* /*
* Call into internal code * Call into internal code
*/ */
...@@ -89,25 +91,34 @@ static int * dealer_buy_car_callee(void) ...@@ -89,25 +91,34 @@ static int * dealer_buy_car_callee(void)
goto fail1; goto fail1;
} }
/* /*
* Alloc capability * Alloc capabilities
*/ */
ret = lcd_ds_store(a, &auto_dsptr, lcd_reply_badge()); ret = lcd_ds_store(a, &auto_dsptr, lcd_reply_badge());
if(ret) { if(ret) {
LCD_ERR("store auto"); LCD_ERR("store auto");
goto fail2; goto fail2;
} }
ret = lcd_ds_store(a->engine, &engine_dsptr, lcd_reply_badge());
if(ret) {
LCD_ERR("store engine");
goto fail3;
}
/* /*
* Reply * Reply
*/ */
lcd_store_r0(0); lcd_store_r0(0);
lcd_store_r1(auto_dsptr); lcd_store_r1(auto_dsptr);
lcd_store_r2(engine_dsptr);
ret = lcd_reply(); ret = lcd_reply();
if (ret) { if (ret) {
LCD_ERR("couldn't reply"); LCD_ERR("couldn't reply");
goto fail3; goto fail4;
} }
return ret; return ret;
fail4:
lcd_ds_drop(lcd_reply_badge(), engine_dsptr);
fail3: fail3:
lcd_ds_drop(lcd_reply_badge(), auto_dsptr); lcd_ds_drop(lcd_reply_badge(), auto_dsptr);
fail2: fail2:
...@@ -382,7 +393,7 @@ int dealer_start(void) ...@@ -382,7 +393,7 @@ int dealer_start(void)
*/ */
return execution_loop(); return execution_loop();
} }
EXPORT_SYMBOL(manufacturer_start); EXPORT_SYMBOL(dealer_start);
int __init dealer_init(void) int __init dealer_init(void)
{ {
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
* *
*/ */
#ifndef LCD_IPC_AUTO_DEALER_IDL_H #ifndef LCD_PROTOTYPE_DEALER_IDL_H
#define LCD_IPC_AUTO_DEALER_IDL_H #define LCD_PROTOTYPE_DEALER_IDL_H
enum dealer_interface { enum dealer_interface {
DEALER_BUY_CAR, DEALER_BUY_CAR,
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
* *
*/ */
#ifndef LCD_IPC_AUTO_DEALER_H #ifndef LCD_PROTOTYPE_DEALER_H
#define LCD_IPC_AUTO_DEALER_H #define LCD_PROTOTYPE_DEALER_H
#include "../include/dstore.h" #include "../include/dstore.h"
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
* *
*/ */
#ifndef LCD_IPC_AUTO_MANUFACTURER_IDL_H #ifndef LCD_PROTOTYPE_MANUFACTURER_IDL_H
#define LCD_IPC_AUTO_MANUFACTURER_IDL_H #define LCD_PROTOTYPE_MANUFACTURER_IDL_H
enum manufacturer_interface { enum manufacturer_interface {
MANUFACTURER_MK_ENGINE, MANUFACTURER_MK_ENGINE,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment