blob: d3fd9dab33317cfed7f7a38e6921fe459d29875d [file] [log] [blame]
khenaidooac637102019-01-14 15:44:34 -05001// +build !linux appengine
2
3/*
4 *
5 * Copyright 2018 gRPC authors.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 */
20
21package syscall
22
23import (
24 "net"
Scott Baker8461e152019-10-01 14:44:30 -070025 "sync"
khenaidooac637102019-01-14 15:44:34 -050026 "time"
27
28 "google.golang.org/grpc/grpclog"
29)
30
Scott Baker8461e152019-10-01 14:44:30 -070031var once sync.Once
32
33func log() {
34 once.Do(func() {
35 grpclog.Info("CPU time info is unavailable on non-linux or appengine environment.")
36 })
khenaidooac637102019-01-14 15:44:34 -050037}
38
39// GetCPUTime returns the how much CPU time has passed since the start of this process.
40// It always returns 0 under non-linux or appengine environment.
41func GetCPUTime() int64 {
Scott Baker8461e152019-10-01 14:44:30 -070042 log()
khenaidooac637102019-01-14 15:44:34 -050043 return 0
44}
45
46// Rusage is an empty struct under non-linux or appengine environment.
47type Rusage struct{}
48
49// GetRusage is a no-op function under non-linux or appengine environment.
50func GetRusage() (rusage *Rusage) {
Scott Baker8461e152019-10-01 14:44:30 -070051 log()
khenaidooac637102019-01-14 15:44:34 -050052 return nil
53}
54
55// CPUTimeDiff returns the differences of user CPU time and system CPU time used
56// between two Rusage structs. It a no-op function for non-linux or appengine environment.
57func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) {
Scott Baker8461e152019-10-01 14:44:30 -070058 log()
khenaidooac637102019-01-14 15:44:34 -050059 return 0, 0
60}
61
62// SetTCPUserTimeout is a no-op function under non-linux or appengine environments
63func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error {
Scott Baker8461e152019-10-01 14:44:30 -070064 log()
khenaidooac637102019-01-14 15:44:34 -050065 return nil
66}
67
68// GetTCPUserTimeout is a no-op function under non-linux or appengine environments
69// a negative return value indicates the operation is not supported
70func GetTCPUserTimeout(conn net.Conn) (int, error) {
Scott Baker8461e152019-10-01 14:44:30 -070071 log()
khenaidooac637102019-01-14 15:44:34 -050072 return -1, nil
73}