mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
netdev-linux: Mark more static data as "const".
This makes this code more obviously thread-safe. Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
@@ -139,6 +139,8 @@ struct tc {
|
||||
* Written only by TC implementation. */
|
||||
};
|
||||
|
||||
#define TC_INITIALIZER(TC, OPS) { OPS, HMAP_INITIALIZER(&(TC)->queues) }
|
||||
|
||||
/* One traffic control queue.
|
||||
*
|
||||
* Each TC implementation subclasses this with whatever additional data it
|
||||
@@ -311,7 +313,7 @@ static const struct tc_ops tc_ops_hfsc;
|
||||
static const struct tc_ops tc_ops_default;
|
||||
static const struct tc_ops tc_ops_other;
|
||||
|
||||
static const struct tc_ops *tcs[] = {
|
||||
static const struct tc_ops *const tcs[] = {
|
||||
&tc_ops_htb, /* Hierarchy token bucket (see tc-htb(8)). */
|
||||
&tc_ops_hfsc, /* Hierarchical fair service curve. */
|
||||
&tc_ops_default, /* Default qdisc (see tc-pfifo_fast(8)). */
|
||||
@@ -1851,7 +1853,7 @@ static int
|
||||
netdev_linux_get_qos_types(const struct netdev *netdev OVS_UNUSED,
|
||||
struct sset *types)
|
||||
{
|
||||
const struct tc_ops **opsp;
|
||||
const struct tc_ops *const *opsp;
|
||||
|
||||
for (opsp = tcs; *opsp != NULL; opsp++) {
|
||||
const struct tc_ops *ops = *opsp;
|
||||
@@ -1865,7 +1867,7 @@ netdev_linux_get_qos_types(const struct netdev *netdev OVS_UNUSED,
|
||||
static const struct tc_ops *
|
||||
tc_lookup_ovs_name(const char *name)
|
||||
{
|
||||
const struct tc_ops **opsp;
|
||||
const struct tc_ops *const *opsp;
|
||||
|
||||
for (opsp = tcs; *opsp != NULL; opsp++) {
|
||||
const struct tc_ops *ops = *opsp;
|
||||
@@ -1879,7 +1881,7 @@ tc_lookup_ovs_name(const char *name)
|
||||
static const struct tc_ops *
|
||||
tc_lookup_linux_name(const char *name)
|
||||
{
|
||||
const struct tc_ops **opsp;
|
||||
const struct tc_ops *const *opsp;
|
||||
|
||||
for (opsp = tcs; *opsp != NULL; opsp++) {
|
||||
const struct tc_ops *ops = *opsp;
|
||||
@@ -3559,13 +3561,11 @@ default_install__(struct netdev *netdev)
|
||||
{
|
||||
struct netdev_dev_linux *netdev_dev =
|
||||
netdev_dev_linux_cast(netdev_get_dev(netdev));
|
||||
static struct tc *tc;
|
||||
static const struct tc tc = TC_INITIALIZER(&tc, &tc_ops_default);
|
||||
|
||||
if (!tc) {
|
||||
tc = xmalloc(sizeof *tc);
|
||||
tc_init(tc, &tc_ops_default);
|
||||
}
|
||||
netdev_dev->tc = tc;
|
||||
/* Nothing but a tc class implementation is allowed to write to a tc. This
|
||||
* class never does that, so we can legitimately use a const tc object. */
|
||||
netdev_dev->tc = CONST_CAST(struct tc *, &tc);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -3608,13 +3608,11 @@ other_tc_load(struct netdev *netdev, struct ofpbuf *nlmsg OVS_UNUSED)
|
||||
{
|
||||
struct netdev_dev_linux *netdev_dev =
|
||||
netdev_dev_linux_cast(netdev_get_dev(netdev));
|
||||
static struct tc *tc;
|
||||
static const struct tc tc = TC_INITIALIZER(&tc, &tc_ops_other);
|
||||
|
||||
if (!tc) {
|
||||
tc = xmalloc(sizeof *tc);
|
||||
tc_init(tc, &tc_ops_other);
|
||||
}
|
||||
netdev_dev->tc = tc;
|
||||
/* Nothing but a tc class implementation is allowed to write to a tc. This
|
||||
* class never does that, so we can legitimately use a const tc object. */
|
||||
netdev_dev->tc = CONST_CAST(struct tc *, &tc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user