/*
* Mausezahn - A fast versatile traffic generator
* Copyright (C) 2010 Herbert Haas
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, see http://www.gnu.org/licenses/gpl-2.0.html
*
*/
#ifndef MZ_LINKED_LIST
#define MZ_LINKED_LIST
#define MAX_PACKET_SEQUENCE_LEN 20 // how many packets can be defined in a sequence at maximum
// A packet sequence -- this is the list data (each list element corresponds to one sequence)
struct pseq {
struct mops *packet[MAX_PACKET_SEQUENCE_LEN]; // pointer to the packets
struct timespec gap[MAX_PACKET_SEQUENCE_LEN]; // optional delay between different packets
int count; // total number of current members (=packets)
};
// --------------- Mausezahn Multipurpose Linked List: -------------------
#define MZ_LL_NAME_LEN 64
// one list element
struct mz_ll {
struct mz_ll *prev;
struct mz_ll *next;
struct mz_ll *head; // always points to head element
int refcount; // head element: total number of list items! (Otherwise can be used as refcount.)
char name[MZ_LL_NAME_LEN];
pthread_t sequence_thread;
int state; // 0 = inactive, 1 = active
int index; // monotonically increasing;
int index_last; //head always stores the last value!
void *data; // points to your data
};
struct mz_ll *packet_sequences;
struct mz_ll *cli_seq; // currently edited packet sequence used by CLI
// prototypes
struct mz_ll * mz_ll_create_new_element(struct mz_ll *list);
int mz_ll_delete_element (struct mz_ll *cur);
int mz_ll_delete_list(struct mz_ll *list);
struct mz_ll * mz_ll_search_name (struct mz_ll *list, char *str);
void _mz_ll_set_default (struct mz_ll *cur);
int mz_ll_dump_all(struct mz_ll *list);
int mops_tx_sequence (struct mz_ll *seq);
// convenience functions using the above in a more intelligent way
int mops_delete_sequence(char *name);
struct mz_ll * mops_create_sequence (char *name);
int mops_dump_sequence (char* str);
int mops_add_packet_to_sequence (struct mz_ll *seq, struct mops *mp);
int mops_add_delay_to_sequence (struct mz_ll *seq, struct timespec *t);
int mops_delete_packet_from_pseq (struct mz_ll *seq, int index);
int mops_delete_all_packets_from_pseq (struct mz_ll *seq);
int stop_sequence (char *name);
int stop_all_sequences ();
#endif
path: root/Documentation/dcdbas.txt
Merge tag 'hsi-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi
Pull HSI updates from Sebastian Reichel:
- proper runtime pm support for omap-ssi and ssi-protocol
- misc fixes
* tag 'hsi-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi: (24 commits)
HSI: omap_ssi: drop pm_runtime_irq_safe
HSI: omap_ssi_port: use rpm autosuspend API
HSI: omap_ssi: call msg->complete() from process context
HSI: omap_ssi_port: ensure clocks are kept enabled during transfer
HSI: omap_ssi_port: replace pm_runtime_put_sync with non-sync variant
HSI: omap_ssi_port: avoid calling runtime_pm_*_sync inside spinlock
HSI: omap_ssi_port: avoid pm_runtime_get_sync in ssi_start_dma and ssi_start_pio
HSI: omap_ssi_port: switch to threaded pio irq
HSI: omap_ssi_core: remove pm_runtime_get_sync call from tasklet
HSI: omap_ssi_core: use pm_runtime_put instead of pm_runtime_put_sync
HSI: omap_ssi_port: prepare start_tx/stop_tx for blocking pm_runtime calls
HSI: core: switch port event notifier from atomic to blocking
HSI: omap_ssi_port: replace wkin_cken with atomic bitmap operations
HSI: omap_ssi: convert cawake irq handler to thread
HSI: ssi_protocol: fix ssip_xmit invocation
HSI: ssi_protocol: replace spin_lock with spin_lock_bh
HSI: ssi_protocol: avoid ssi_waketest call with held spinlock
HSI: omap_ssi: do not reset module
HSI: omap_ssi_port: remove useless newline
hsi: Only descend into hsi directory when CONFIG_HSI is set
...