Final Exam Reference Page
You may detach this page and keep; nothing written on it will be marked.
Thread functions (pthread.h)
int pthread_create(pthread_t *thread,
pthread_attr_t *attr, void *(*funct)(void *), void *arg);
void pthread_exit(void *retval);
int pthread_join(pthread_t thread, void **retval);
int pthread_detach(pthread_t thread);
pthread_t pthread_self(void);
Mutex (pthread.h)
pthread_mutex_t myLock = PTHREAD_MUTEX_INITIALIZER;
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
Condition Variables (pthread.h)
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_cond_wait(pthread_cond_t *cond,
pthread_mutex_t *mutex);
pthread_cond_signal(pthread_cond_t *cond);
pthread_cond_broadcast(pthread_cond_t *cond);
Semaphores (semaphore.h)
sem_t sem;
int sem_init(sem_t *sem, int pshared,
unsigned int value);
// pshared = 0 for threads; 1 for processes.
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
Read-Write Lock (pthread.h)
int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);
Unbuffered I/O (fcntl.h, unistd.h)
// fd's: STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO
int open(const char *pathname, int flags);
// flags: O_RDONLY, O_WRONLY, O_RDWR,
// O_APPEND, O_CREAT, O_NONBLOCK
int open(const char *pathname, int flags, mode_t mode);
// mode creating: S_IRWXU, S_IRUSR, S_IWUSR, S_IRWXG
ssize_t write(int fd, const void *buf, size_t count);
ssize_t read(int fd, void *buf, size_t count);
int close(int fd);
off_t lseek(int fd, off_t offset, int whence);
// whence = SEEK_SET, SEEK_CUR, SEEK_END
int fcntl(int fd, int op, ... /* arg */ );
C Standard Library I/O (stdio.h)
// FILE`s: stdin, stdout, stderr
FILE *fopen(const char *pathname, const char *mode);
int fclose(FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int fputc(int c, FILE *stream);
int fputs(const char *s, FILE *stream);
int fgetc(FILE *stream);
char *fgets(char s, int size, FILE *stream);
FILE *fdopen(int fd, const char *mode);
int fileno(FILE *stream);
int fflush(FILE *stream);
Networking (sys/socket.h)
int accept(int socket, struct sockaddr *address, socklen_t *address_len);
int bind(int socket, const struct sockaddr *address, socklen_t address_len);
int connect(int socket, const struct sockaddr *address, socklen_t address_len);
int listen(int socket, int backlog);
int socket(int domain, int type, int protocol);
// domain: AF_UNIX, AF_INET, AF_INET6
// type: SOCK_STREAM, SOCK_DGRAM
// protocol: 0
ssize_t recvfrom(int socket, void *buffer, size_t length, int flags, struct sockaddr *address, socklen_t *address_len);
ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len);
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
// flags: MSG_DONTWAIT, MSG_PEEK
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
// flags: MSG_DONTWAIT
struct sockaddr_un {
sa_family_t sun_family; // AF_UNIX, AF_INET, AF_INET6
char sun_path[108];
};
struct in_addr {
in_addr_t s_addr;
};
// in_addr_t constants: INADDR_LOOPBACK, INADDR_ANY
struct sockaddr_in {
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
unsigned char __pad[X];
};
IPC (unistd.h, sys/mmap.h)
int pipe(int fildes[2]);
int dup2(int oldfd, int newfd);
int mkfifo(const char *pathname, mode_t mode);
int unlink(const char *path);
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
// addr: usually NULL
// prot: PROT_WRITE, PROT_READ
// flags: MAP_SHARED, MAP_PRIVATE,
// MAP_ANONYMOUS (offset=0, fd=-1 if not shm_open())
int munmap(void *addr, size_t length);
int shm_open(const char *name, int oflag, mode_t mode);
// oflag: O_RDONLY, O_RDWR, O_CREAT
// mode creating: S_IRWXU, S_IRUSR, S_IWUSR, S_IRWXG
int ftruncate(int fd, off_t length);
int shm_unlink(const char *name);
General Functions
// (string.h)
void *memset(void *s, int c, size_t n);
char *strncpy(char *dst, const char *src, size_t dsize);
char *strtok_r(char *str, const char *delim, char **saveptr);
size_t strnlen(const char s[.maxlen], size_t maxlen);
// (ctype.h)
int toupper(int c);
int tolower(int c);
int isalpha(int c);
int isdigit(int c);
int isspace(int c);
// (stdlib.h)
int rand(void);
// (stdio.h)
void perror(const char *s);
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
int snprintf(char *str, size_t size, const char *format, ...);
// (unistd.h)
unsigned int sleep(unsigned int seconds);
void *malloc(size_t size);
void free(void *_Nullable ptr);