From e2de64d6f1beb9e492daf5b886e19933c1fa41dd Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdemultimedia@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- mpg123_artsplugin/mpg123/xfermem.h | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 mpg123_artsplugin/mpg123/xfermem.h (limited to 'mpg123_artsplugin/mpg123/xfermem.h') diff --git a/mpg123_artsplugin/mpg123/xfermem.h b/mpg123_artsplugin/mpg123/xfermem.h new file mode 100644 index 00000000..ae7e5afd --- /dev/null +++ b/mpg123_artsplugin/mpg123/xfermem.h @@ -0,0 +1,60 @@ +/* + * xfermem.h + * + * Oliver Fromme + * Sat Mar 29 04:41:34 MET 1997 + * + * This is a stand-alone module which implements a unidirectional, + * fast pipe using mmap(). Its primary use is to transfer large + * amounts of data from a parent process to its child process, + * with a buffer in between which decouples blocking conditions + * on both sides. Control information is transferred between the + * processes through a socketpair. See xftest.c for an example on + * how to use this module. + */ + +#ifndef TRUE +#define FALSE 0 +#define TRUE 1 +#endif + +typedef struct { + int freeindex; /* [W] next free index */ + int readindex; /* [R] next index to read */ + int fd[2]; + int wakeme[2]; + byte *data; + byte *metadata; + int size; + int metasize; + int buf[3]; +} txfermem; +/* + * [W] -- May be written to by the writing process only! + * [R] -- May be written to by the reading process only! + * All other entries are initialized once. + */ + +void xfermem_init (txfermem **xf, int bufsize, int msize,int skipbuf); +void xfermem_init_writer (txfermem *xf); +void xfermem_init_reader (txfermem *xf); + +int xfermem_write (txfermem *xf, byte *data, int count); +int xfermem_read (txfermem *xf, byte *data, int count); + +int xfermem_get_freespace (txfermem *xf); +int xfermem_get_usedspace (txfermem *xf); +#define XF_CMD_WAKEUP_INFO 0x04 +#define XF_CMD_WAKEUP 0x02 +#define XF_CMD_TERMINATE 0x03 +#define XF_WRITER 0 +#define XF_READER 1 +int xfermem_getcmd (int fd, int block); +int xfermem_putcmd (int fd, byte cmd); +int xfermem_block (int fd, txfermem *xf); + +void xfermem_done (txfermem *xf); +#define xfermem_done_writer xfermem_init_reader +#define xfermem_done_reader xfermem_init_writer + +/* EOF */ -- cgit v1.2.1