// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library zx;

@transport("Syscall")
protocol Categories {
    @noreturn
    NoResponseNoReturn(struct {
        input int32;
    });

    @blocking
    Looper(struct {
        a int32;
    }) -> (struct {
        b int32;
    });

    @vdsocall
    Vdsoer(struct {
        a int32;
    }) -> (struct {
        b int32;
    });

    @const
    @vdsocall
    TwoCategories(struct {
        a int32;
    }) -> (struct {
        b int32;
    });
};
