>>  2.l4_ipc_error( ),return 4,i look up in l4re document it means
>> L4_ENOT_EXISTENT.but how can i solve that?
>The documentation in the header file (pkg/l4sys/include/ipc.h) is quite clear about the error source:
>L4_IPC_ENOT_EXISTENT    = 0x04, /**< Non-existing destination or source.
>could you please give us a minimal code example (including the lua script and both communcation partners) that >causes this? You communication partner has probably terminated or something like that.
i want to use touchscreen on my omap3530 board.then i add REQUIRES_LIBS_arm = libdrivers-input in file pkg/input/lib/src/makefie. then in function tsc_irq_func( ) in file pkg/drivers/input/src/tsc-omap3.c , l4_ipc_err( tag,l4_utcb()) return 4.


the arm-omap3.devs 
# OMAP3 (OMAP3EVM, Beagleboard)

hw-root
{
  sys => new Device()
  {
    .hid = "System Control";
    new-res Mmio(0x48002000 .. 0x48002fff);
    new-res Mmio(0x48004000 .. 0x48004fff);
  }

  prcm => new Device()
  {
    .hid = "OMAP PRCM";
    new-res Mmio(0x48004000 .. 0x48004fff);
    new-res Mmio(0x48005000 .. 0x48005fff);
  }

  gpio => new Device()
  {
    .hid = "GPIO";
    new-res Mmio(0x48004000 .. 0x48004fff);
    new-res Mmio(0x48310000 .. 0x48310fff);
    new-res Mmio(0x49050000 .. 0x49050fff);
    new-res Mmio(0x49052000 .. 0x49052fff);
    new-res Mmio(0x49054000 .. 0x49054fff);
    new-res Mmio(0x49056000 .. 0x49056fff);
    new-res Mmio(0x49058000 .. 0x49058fff);
  }

  lcd => new Device()
  {
    .hid = "OMAP_LCD";
    new-res Mmio(0x48050000 .. 0x48050fff);
  }

  i2c1 => new Device()
  {
    .hid = "I2C";
    new-res Mmio(0x48070000 .. 0x48070fff);
  }

  kp => new Device()
  {
    .hid = "OMAP_KP";
    new-res Mmio(0x48070000 .. 0x48070fff);
  }

  mcspi => new Device()
  {
    .hid = "McSPI";
    new-res Mmio(0x48098000 .. 0x48098fff);
  }

  tsc => new Device()
  {
    .hid = "OMAP_TSC";
    new-res Mmio(0x48098000 .. 0x48098fff);
    new-res Irq(32);
  }
}


the l4_android-arm.vbus file is
# vim:set ft=ioconfig:
# configuration file for io

gui => new System_bus()
{
  #KBD => wrap(hw-root.KBD);
  #MOUSE => wrap(hw-root.MOUSE);
  tsc => wrap(hw-root.tsc);
  mcspi => wrap(hw-root.mcspi);
  kp => wrap(hw-root.kp);
  i2c1 => wrap(hw-root.i2c1);

  gpio => wrap(hw-root.gpio);
}

fbdrv => new System_bus()
{
  sys => wrap(hw-root.sys);
  lcd => wrap(hw-root.lcd);
}

android_bus => new System_bus()
{
}

the cfg file is
require("L4");

local lxname = "vmlinuz.android";
local l = L4.default_loader;

local io_caps = {
  sigma0 = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0);
  gui = L4.default_loader:new_channel():svr();
  android_bus = L4.default_loader:new_channel():svr();
  fbdrv = L4.default_loader:new_channel():svr();
  rom = L4.Env.rom;
  icu = L4.Env.icu;
};

local fb_caps = {
    vbus = io_caps.fbdrv;
    rom = L4.Env.rom;
    fb = L4.default_loader:new_channel():svr();
};

L4.default_loader:startv(
  {
    caps = io_caps,
    log = { "io", "red" },
  },
  "rom/io", "rom/arm-omap3.devs", "rom/l4_android-arm.vbus");

L4.default_loader:startv(
        {
        caps = fb_caps,
        log =  { "fb", "cyan" },
        },
        "rom/fb-drv");


local mag_caps = {
mag = l:new_channel(),
svc = l:new_channel(),
};

l:start({
          caps = {
   vbus = io_caps.gui,
   fb   = fb_caps.fb,
   mag  = mag_caps.mag:svr(),
   svc  = mag_caps.svc:svr(),
 },
          log      = { "mag", "g" },
 l4re_dbg = L4.Dbg.Warn,
        },
"rom/mag");

local android_caps = {
  log = L4.Env.log:m("rws");
  vbus = io_caps.android_bus;
  rom = L4.Env.rom;
  fb = mag_caps.svc:create(L4.Proto.Goos, "g=800x476+0+0");
};

L4.default_loader:start(
  {
    caps = android_caps,
    l4re_dbg = L4.Dbg.Warn,
    log = { "android", "yellow" },
  },
  "rom/" .. lxname .. " console=ttyLv0 androidboot.console=ttyLv0 mem=128M l4bdds.add=rom/system-arm-ginger.img,rw boot=local android.ril=ttyLv1 ip=dhcp l4x_rd=rom/root-arm-ginger.img rw root=1:0 ramdisk_size=1500 init=/init --debug l4fb.touchscreen=1");

thanks!