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
{
42 ssize_t
world_ingress(World
*world
, uint32_t pport
,
43 const struct iovec
*iov
, int iovcnt
);
44 int world_do_cmd(World
*world
, DescInfo
*info
,
45 char *buf
, uint16_t cmd
, RockerTlv
*cmd_info_tlv
);
47 World
*world_alloc(Rocker
*r
, size_t sizeof_private
,
48 enum rocker_world_type type
, WorldOps
*ops
);
49 void world_free(World
*world
);
50 void world_reset(World
*world
);
52 void *world_private(World
*world
);
53 Rocker
*world_rocker(World
*world
);
55 enum rocker_world_type
world_type(World
*world
);
56 const char *world_name(World
*world
);
58 World
*rocker_get_world(Rocker
*r
, enum rocker_world_type type
);
60 #endif /* _ROCKER_WORLD_H_ */