2 * QEMU rocker switch emulation - switch worlds
4 * Copyright (c) 2014 Scott Feldman <sfeldma@gmail.com>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
17 #ifndef ROCKER_WORLD_H
18 #define ROCKER_WORLD_H
20 #include "rocker_hw.h"
22 enum rocker_world_type
{
23 ROCKER_WORLD_TYPE_OF_DPA
= ROCKER_PORT_MODE_OF_DPA
,
24 ROCKER_WORLD_TYPE_MAX
,
27 typedef int (world_init
)(World
*world
);
28 typedef void (world_uninit
)(World
*world
);
29 typedef ssize_t (world_ig
)(World
*world
, uint32_t pport
,
30 const struct iovec
*iov
, int iovcnt
);
31 typedef int (world_cmd
)(World
*world
, DescInfo
*info
,
32 char *buf
, uint16_t cmd
,
33 RockerTlv
*cmd_info_tlv
);
35 typedef struct world_ops
{
43 ssize_t
world_ingress(World
*world
, uint32_t pport
,
44 const struct iovec
*iov
, int iovcnt
);
45 int world_do_cmd(World
*world
, DescInfo
*info
,
46 char *buf
, uint16_t cmd
, RockerTlv
*cmd_info_tlv
);
48 World
*world_alloc(Rocker
*r
, size_t sizeof_private
,
49 enum rocker_world_type type
, WorldOps
*ops
);
50 void world_free(World
*world
);
51 void world_reset(World
*world
);
53 void *world_private(World
*world
);
54 Rocker
*world_rocker(World
*world
);
56 enum rocker_world_type
world_type(World
*world
);
57 const char *world_name(World
*world
);
59 World
*rocker_get_world(Rocker
*r
, enum rocker_world_type type
);
61 #endif /* ROCKER_WORLD_H */