poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

pokelet debugging stuff


From: Jose E. Marchesi
Subject: pokelet debugging stuff
Date: Wed, 16 Mar 2022 00:26:27 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

$ socat - UNIX-CONNECT:/tmp/poked.ipc | ~/dumpvu.pk > out.dat

plet.pk:

var PLET_VU_CMD_CLEAR = 1UB;
var PLET_VU_CMD_APPEND = 2UB;
var PLET_VU_CMD_HIGHLIGHT = 3UB;
var PLET_VU_CMD_FILTER = 4UB;
var PLET_VU_CMD_FINISH = 5UB;

type Plet_Vu_Msg =
  struct
  {
    little offset<uint<16>,B> length : length >= 2#B;
    byte cmd : cmd in [PLET_VU_CMD_CLEAR, PLET_VU_CMD_APPEND,
                       PLET_VU_CMD_HIGHLIGHT, PLET_VU_CMD_FILTER,
                       PLET_VU_CMD_FINISH];
    union
    {
      string filter : cmd == PLET_VU_CMD_FILTER;
      string append : cmd == PLET_VU_CMD_APPEND;
      byte empty : empty == 0UB;
    } data : data'size == length - 1#B;
  };


dumpvu.pk:

#!/usr/local/bin/poke -L
!#

var PLET_VU_CMD_CLEAR = 1UB;
var PLET_VU_CMD_APPEND = 2UB;
var PLET_VU_CMD_HIGHLIGHT = 3UB;
var PLET_VU_CMD_FILTER = 4UB;
var PLET_VU_CMD_FINISH = 5UB;

vm_set_obase (16);
set_endian (ENDIAN_LITTLE);

type Plet_Vu_Msg =
  struct
  {
    little offset<uint<16>,B> length : length >= 2#B;
    byte cmd : cmd in [PLET_VU_CMD_CLEAR, PLET_VU_CMD_APPEND,
                       PLET_VU_CMD_HIGHLIGHT, PLET_VU_CMD_FILTER,
                       PLET_VU_CMD_FINISH];
    union
    {
      string filter : cmd == PLET_VU_CMD_FILTER;
      string append : cmd == PLET_VU_CMD_APPEND;
      byte empty : empty == 0UB;
    } data : data'size == length - 1#B;
  };

var stdin = open ("<stdin>");
var stdout = open ("<stdout>");
var stderr = open ("<stderr>");

var offset = 0#B;

try
{
  flush (stdin, offset);

  var msg = Plet_Vu_Msg @ stdin : offset;
  var text = format ("%Tv\n", msg);
  var bytes = byte[text'length]();

  stoca (text, bytes);
  byte[] @ stderr : iosize (stderr) = bytes;
  Plet_Vu_Msg @ stdout : iosize (stdout) = msg;
  offset += msg'size;
}
until E_eof;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]