Beispiel #1
0
/**
 * Set the parameters of the dsp device
 */
int dsp_configuration(int const fd_dsp, music_file_t const * audio_file)
{
    unsigned arg;
    int ret;

    // Nb of channels
    arg = audio_file -> channels;
    MY_IOCTL(fd_dsp, SNDCTL_DSP_CHANNELS, & arg);
    if (arg != audio_file -> channels) {
        fprintf(stderr, "This number of channels not supported by OSS! Sorry...\n");
        return 1;
    }

    // Sample format
    arg = audio_file -> oss_format;
    unsigned format = audio_file -> oss_format;
    // Some sound cards don't support AFMT_S8 but use AFMT_U8 instead...
    ret = ioctl(fd_dsp, SNDCTL_DSP_SETFMT, &arg);
    if (ret == -1 && errno == EINVAL && format == AFMT_S8) {
        arg = format = AFMT_U8;
        ret = ioctl(fd_dsp, SNDCTL_DSP_SETFMT, &arg);
    }
    if (ret == -1) {
        perror ("ioctl");
        return 2;
    }

    if (arg != format) {
        fprintf(stderr, "Unable to set OSS sample format.\n");
        return 1;
    }

    // Sample rate
    arg = audio_file -> sample_rate;
    MY_IOCTL(fd_dsp, SNDCTL_DSP_SPEED, & arg);
    if (arg != audio_file -> sample_rate) {
        fprintf(stderr, "This sample rate is not supported by OSS... Sorry!\n");
        return 1;
    }

    return 0;
}
Beispiel #2
0
int az_pgroup_destroy(az_groupid_t gid)
{
    struct az_pgroup_destroy_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.gid = gid;

    return MY_IOCTL(__azulfd, IOC_AZ_PGROUP_DESTROY, &a);
}
Beispiel #3
0
int64_t az_process_get_gid(pid_t pid)
{
    struct az_process_get_gid_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.label = pid;

    return MY_IOCTL(__azulfd, IOC_AZ_PROCESS_GET_GID, &a);
}
Beispiel #4
0
int az_pgroup_uncommit_all(az_groupid_t gid)
{
    struct az_pgroup_uncommit_all_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.gid = gid;

    return MY_IOCTL(__azulfd, IOC_AZ_PGROUP_UNCOMMIT_ALL, &a);
}
Beispiel #5
0
/**
 * Stop playing thread
 */
int stop_play_loop_music_buffer(pthread_t thread, music_buffer_t *music_buf)
{
    int ret;
    music_buf->playing = 0;
    music_buf->pausing = 0;
    pthread_cond_broadcast(&(music_buf->cond));
    MY_IOCTL(music_buf->fd_dsp, SNDCTL_DSP_RESET, NULL);
    ret = pthread_join(thread, NULL);
    if (ret) {
        fprintf(stderr, "pthread_join returned error code %d\n", ret);
        return 1;
    }
    return 0;
}
Beispiel #6
0
int private_az_process_get_list(az_pgroup_member_t *pm, uint64_t *cnt)
{
    struct az_process_get_list_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.memberp = pm;
    a.countp = cnt;

    return MY_IOCTL(__azulfd, IOC_AZ_PROCESS_GET_LIST, &a);
}
Beispiel #7
0
int az_process_kill(pid_t pid, int signum)
{
    struct az_process_kill_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.label = pid;
    a.signo = signum;

    return MY_IOCTL(__azulfd, IOC_AZ_PROCESS_KILL, &a);
}
Beispiel #8
0
int az_pgroup_get_list(az_groupid_t *gids, size_t *numgids)
{
    struct az_pgroup_get_list_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.gidp = (uint64_t *)gids; /* TODO FIXME */
    a.countp = numgids;

    return MY_IOCTL(__azulfd, IOC_AZ_PGROUP_GET_LIST, &a);
}
Beispiel #9
0
int az_pgroup_get_data(az_groupid_t gid, void *data, size_t *size)
{
    struct az_pgroup_get_data_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.gid = gid;
    a.data = data;
    a.data_size = size;

    return MY_IOCTL(__azulfd, IOC_AZ_PGROUP_GET_DATA, &a);
}
Beispiel #10
0
int az_pgroup_create(az_groupid_t gid, const void *data, size_t size)
{
    struct az_pgroup_create_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.gid = gid;
    a.data = (void *)data;
    a.data_size = size;

    return MY_IOCTL(__azulfd, IOC_AZ_PGROUP_CREATE, &a);
}
Beispiel #11
0
int az_process_move(pid_t pid, int64_t sgid, int64_t dgid)
{
    struct az_process_move_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.label = pid;
    a.sgid = sgid;
    a.dgid = dgid;

    return MY_IOCTL(__azulfd, IOC_AZ_PROCESS_MOVE, &a);
}
Beispiel #12
0
int az_process_add(az_allocid_t ignored, pid_t pid, az_groupid_t gid)
{
    struct az_process_add_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.label = pid;
    a.pid = pid;
    a.gid = gid;

    return MY_IOCTL(__azulfd, IOC_AZ_PROCESS_ADD, &a);
}
Beispiel #13
0
int az_pgroup_get_rlimit(az_groupid_t gid, process_resource_t type,
                         az_rlimit_t *rl)
{
    struct az_pgroup_get_rlimit_args a;

    if (__azulinit()) {
        errno = __azul_errno;
        return -1;
    }

    a.gid = gid;
    a.resource = type;
    a.rlimit = rl;

    return MY_IOCTL(__azulfd, IOC_AZ_PGROUP_GET_RLIMIT, &a);
}