Date: Thu, 4 Feb 2010 07:24:13 +0000 (UTC) From: Luigi Rizzo <luigi@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r203481 - user/luigi/ipfw3-head/sys/netinet/ipfw Message-ID: <201002040724.o147OD9l046782@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: luigi Date: Thu Feb 4 07:24:13 2010 New Revision: 203481 URL: http://svn.freebsd.org/changeset/base/203481 Log: portability fix for compilers that do not have C99 initializers Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h Thu Feb 4 07:18:19 2010 (r203480) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h Thu Feb 4 07:24:13 2010 (r203481) @@ -40,9 +40,8 @@ */ struct dn_alg { uint32_t type; /* the scheduler type */ - uint32_t flags; /* DN_MULTIQUEUE if supports multiple queues */ const char *name; /* scheduler name */ - int ref_count; /* XXX number of instances in the system */ + uint32_t flags; /* DN_MULTIQUEUE if supports multiple queues */ /* * The following define the size of 4 optional data structures @@ -62,8 +61,6 @@ struct dn_alg { size_t q_datalen; /* per-queue parameters (e.g. S,F) */ - SLIST_ENTRY(dn_alg) next; /* Next scheduler in the list */ - /* * Methods implemented by the scheduler: * enqueue enqueue packet 'm' on scheduler 's', queue 'q'. @@ -114,8 +111,19 @@ struct dn_alg { int (*free_fsk)(struct dn_fsk *f); int (*new_queue)(struct dn_queue *q); int (*free_queue)(struct dn_queue *q); + + /* run-time fields */ + int ref_count; /* XXX number of instances in the system */ + SLIST_ENTRY(dn_alg) next; /* Next scheduler in the list */ }; +/* MSVC does not support initializers so we need this ugly macro */ +#ifdef _WIN32 +#define _SI(fld) +#else +#define _SI(fld) fld +#endif + /* * Additionally, dummynet exports some functions and macros * to be used by schedulers: Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c Thu Feb 4 07:18:19 2010 (r203480) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_fifo.c Thu Feb 4 07:24:13 2010 (r203481) @@ -93,15 +93,24 @@ fifo_free_sched(struct dn_sch_inst *si) * data structures, and function pointers. */ static struct dn_alg fifo_desc = { - .type = DN_SCHED_FIFO, - .name = "FIFO", + _SI( .type = ) DN_SCHED_FIFO, + _SI( .name = ) "FIFO", + _SI( .flags = ) 0, - .si_datalen = sizeof(struct dn_queue), + _SI( .schk_datalen = ) 0, + _SI( .si_datalen = ) sizeof(struct dn_queue), + _SI( .q_datalen = ) 0, - .enqueue = fifo_enqueue, - .dequeue = fifo_dequeue, - .new_sched = fifo_new_sched, - .free_sched = fifo_free_sched, + _SI( .enqueue = ) fifo_enqueue, + _SI( .dequeue = ) fifo_dequeue, + _SI( .config = ) NULL, + _SI( .destroy = ) NULL, + _SI( .new_sched = ) fifo_new_sched, + _SI( .free_sched = ) fifo_free_sched, + _SI( .new_fsk = ) NULL, + _SI( .free_fsk = ) NULL, + _SI( .new_queue = ) NULL, + _SI( .free_queue = ) NULL, }; DECLARE_DNSCHED_MODULE(dn_fifo, &fifo_desc); Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c Thu Feb 4 07:18:19 2010 (r203480) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_qfq.c Thu Feb 4 07:24:13 2010 (r203481) @@ -791,21 +791,25 @@ qfq_new_sched(struct dn_sch_inst *si) * QFQ scheduler descriptor */ static struct dn_alg qfq_desc = { - .type = DN_SCHED_QFQ, - .name = "QFQ", - .flags = DN_MULTIQUEUE, - - .si_datalen = sizeof(struct qfq_sched), - .q_datalen = sizeof(struct qfq_class) - sizeof(struct dn_queue), - - .enqueue = qfq_enqueue, - .dequeue = qfq_dequeue, - - .new_sched = qfq_new_sched, - .new_fsk = qfq_new_fsk, - - .new_queue = qfq_new_queue, - .free_queue = qfq_free_queue, + _SI( .type = ) DN_SCHED_QFQ, + _SI( .name = ) "QFQ", + _SI( .flags = ) DN_MULTIQUEUE, + + _SI( .schk_datalen = ) 0, + _SI( .si_datalen = ) sizeof(struct qfq_sched), + _SI( .q_datalen = ) sizeof(struct qfq_class) - sizeof(struct dn_queue), + + _SI( .enqueue = ) qfq_enqueue, + _SI( .dequeue = ) qfq_dequeue, + + _SI( .config = ) NULL, + _SI( .destroy = ) NULL, + _SI( .new_sched = ) qfq_new_sched, + _SI( .free_sched = ) NULL, + _SI( .new_fsk = ) qfq_new_fsk, + _SI( .free_fsk = ) NULL, + _SI( .new_queue = ) qfq_new_queue, + _SI( .free_queue = ) qfq_free_queue, }; DECLARE_DNSCHED_MODULE(dn_qfq, &qfq_desc); Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c Thu Feb 4 07:18:19 2010 (r203480) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_rr.c Thu Feb 4 07:24:13 2010 (r203481) @@ -276,24 +276,25 @@ rr_free_queue(struct dn_queue *_q) * structures and function pointers. */ static struct dn_alg rr_desc = { - .type = DN_SCHED_RR, - .name = "RR", - .flags = DN_MULTIQUEUE, - - .si_datalen = sizeof(struct rr_si), - .q_datalen = sizeof(struct rr_queue) - sizeof(struct dn_queue), - - .enqueue = rr_enqueue, - .dequeue = rr_dequeue, - - .config = rr_config, - .new_sched = rr_new_sched, - .free_sched = rr_free_sched, - - .new_fsk = rr_new_fsk, - - .new_queue = rr_new_queue, - .free_queue = rr_free_queue, + _SI( .type = ) DN_SCHED_RR, + _SI( .name = ) "RR", + _SI( .flags = ) DN_MULTIQUEUE, + + _SI( .schk_datalen = ) 0, + _SI( .si_datalen = ) sizeof(struct rr_si), + _SI( .q_datalen = ) sizeof(struct rr_queue) - sizeof(struct dn_queue), + + _SI( .enqueue = ) rr_enqueue, + _SI( .dequeue = ) rr_dequeue, + + _SI( .config = ) rr_config, + _SI( .destroy = ) NULL, + _SI( .new_sched = ) rr_new_sched, + _SI( .free_sched = ) rr_free_sched, + _SI( .new_fsk = ) rr_new_fsk, + _SI( .free_fsk = ) NULL, + _SI( .new_queue = ) rr_new_queue, + _SI( .free_queue = ) rr_free_queue, }; Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c Thu Feb 4 07:18:19 2010 (r203480) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched_wf2q.c Thu Feb 4 07:24:13 2010 (r203481) @@ -340,24 +340,29 @@ wf2qp_free_queue(struct dn_queue *q) * structures and function pointers. */ static struct dn_alg wf2qp_desc = { - .type = DN_SCHED_WF2QP, - .name = "WF2Q+", - .flags = DN_MULTIQUEUE, + _SI( .type = ) DN_SCHED_WF2QP, + _SI( .name = ) "WF2Q+", + _SI( .flags = ) DN_MULTIQUEUE, /* we need extra space in the si and the queue */ - .si_datalen = sizeof(struct wf2qp_si), - .q_datalen = sizeof(struct wf2qp_queue) - sizeof(struct dn_queue), - - .enqueue = wf2qp_enqueue, - .dequeue = wf2qp_dequeue, - - .new_sched = wf2qp_new_sched, - .free_sched = wf2qp_free_sched, + _SI( .schk_datalen = ) 0, + _SI( .si_datalen = ) sizeof(struct wf2qp_si), + _SI( .q_datalen = ) sizeof(struct wf2qp_queue) - + sizeof(struct dn_queue), + + _SI( .enqueue = ) wf2qp_enqueue, + _SI( .dequeue = ) wf2qp_dequeue, + + _SI( .config = ) NULL, + _SI( .destroy = ) NULL, + _SI( .new_sched = ) wf2qp_new_sched, + _SI( .free_sched = ) wf2qp_free_sched, - .new_fsk = wf2qp_new_fsk, + _SI( .new_fsk = ) wf2qp_new_fsk, + _SI( .free_fsk = ) NULL, - .new_queue = wf2qp_new_queue, - .free_queue = wf2qp_free_queue, + _SI( .new_queue = ) wf2qp_new_queue, + _SI( .free_queue = ) wf2qp_free_queue, };
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002040724.o147OD9l046782>