# zx_syscall_test_7

## NAME

<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->

TODO(fxbug.dev/32938)

## SYNOPSIS

<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->

```c
#include <zircon/syscalls.h>

zx_status_t zx_syscall_test_7(int32_t a,
                              int32_t b,
                              int32_t c,
                              int32_t d,
                              int32_t e,
                              int32_t f,
                              int32_t g);
```

## DESCRIPTION

TODO(fxbug.dev/32938)

## RIGHTS

<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->

TODO(fxbug.dev/32253)

## RETURN VALUE

TODO(fxbug.dev/32938)

## ERRORS

TODO(fxbug.dev/32938)

## SEE ALSO


TODO(fxbug.dev/32938)
