|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 2417 (0x971) Types: TextFile Names: »ring.h«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦639290824⟧ »EurOpenD3/misc/tn3270.4.1.1.tar.Z« └─⟦cd3e6b3a4⟧ └─⟦this⟧ »disttn3270/telnet/Source/ring.h«
/* * Copyright (c) 1988 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#)ring.h 1.8 (Berkeley) 6/29/88 */ /* * This defines a structure for a ring buffer. * * The circular buffer has two parts: *((( * full: [consume, supply) * empty: [supply, consume) *]]] * */ typedef struct { char *consume, /* where data comes out of */ *supply, /* where data comes in to */ *bottom, /* lowest address in buffer */ *top, /* highest address+1 in buffer */ *mark; /* marker (user defined) */ int size; /* size in bytes of buffer */ u_long consumetime, /* help us keep straight full, empty, etc. */ supplytime; } Ring; /* Here are some functions and macros to deal with the ring buffer */ #if defined(LINT_ARGS) /* Initialization routine */ extern int ring_init(Ring *ring, char *buffer, int count); /* Data movement routines */ extern void ring_supply_data(Ring *ring, char *buffer, int count), ring_consume_data(Ring *ring, char *buffer, int count); /* Buffer state transition routines */ extern void ring_supplied(Ring *ring, int count), ring_consumed(Ring *ring, int count); /* Buffer state query routines */ extern int ring_empty_count(Ring *ring), ring_empty_consecutive(Ring *ring), ring_full_count(Ring *ring), ring_full_consecutive(Ring *ring); #else /* LINT_ARGS */ extern int ring_init(); extern void ring_supply_data(), ring_consume_data(); extern void ring_supplied(), ring_consumed(); extern void ring_clear_mark(), ring_mark(); extern int ring_empty_count(), ring_empty_consecutive(), ring_full_count(), ring_full_consecutive(); #endif /* defined(LINT_ARGS) */