2025-02-24 03:22:05 +01:00
|
|
|
/* Plzip - A parallel version of the lzip data compressor
|
|
|
|
Copyright (C) 2009 Laszlo Ersek.
|
2025-02-24 03:23:29 +01:00
|
|
|
Copyright (C) 2009, 2010 Antonio Diaz Diaz.
|
2025-02-24 03:22:05 +01:00
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
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/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
void show_error( const char * msg, const int errcode = 0, const bool help = false ) throw();
|
2025-02-24 03:23:29 +01:00
|
|
|
int readblock( const int fd, char * buf, const int size ) throw();
|
|
|
|
int writeblock( const int fd, const char * buf, const int size ) throw();
|
2025-02-24 03:22:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
struct Cond
|
|
|
|
{
|
|
|
|
pthread_mutex_t lock; /* Lock this to protect shared resource. */
|
|
|
|
pthread_cond_t cond; /* Trigger this if predicate becomes true. */
|
|
|
|
long unsigned ccount, /* Increment this when checking predicate. */
|
|
|
|
wcount; /* Increment this when waiting is necessary. */
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2025-02-24 03:23:29 +01:00
|
|
|
/* Terminate the process. */
|
|
|
|
void fatal();
|
2025-02-24 03:22:05 +01:00
|
|
|
|
|
|
|
/* Format operation and append resolved error, then call fatal(). */
|
|
|
|
void
|
|
|
|
fail(const char *fmt, int err, ...)
|
|
|
|
#ifdef __GNUC__
|
|
|
|
__attribute__((format(printf, 1, 3)))
|
|
|
|
#endif
|
|
|
|
;
|
|
|
|
|
|
|
|
/* If these primitives fail, they call fail(), which in turn calls fatal(). */
|
|
|
|
|
|
|
|
void
|
|
|
|
xinit(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xdestroy(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xlock(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xlock_pred(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xunlock(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xwait(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xsignal(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xbroadcast(Cond *cond);
|
|
|
|
|
|
|
|
void
|
|
|
|
xcreate(pthread_t *thread, void *(*routine)(void *), void *arg);
|
|
|
|
|
|
|
|
void
|
|
|
|
xjoin(pthread_t thread);
|
|
|
|
|
|
|
|
void
|
|
|
|
xraise(int sig);
|