client.c (6db25fb13abaec0c2f1fa876824bf3c2a9a3e1d4) client.c (9ac596a4e875e28bb1fa4b2e00549fadfaf4784e)
1/*
2 * Copyright 2013 Red Hat Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the

--- 36 unchanged lines hidden (view full) ---

45nvif_client_resume(struct nvif_client *client)
46{
47 return client->driver->resume(client->object.priv);
48}
49
50void
51nvif_client_dtor(struct nvif_client *client)
52{
1/*
2 * Copyright 2013 Red Hat Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the

--- 36 unchanged lines hidden (view full) ---

45nvif_client_resume(struct nvif_client *client)
46{
47 return client->driver->resume(client->object.priv);
48}
49
50void
51nvif_client_dtor(struct nvif_client *client)
52{
53 nvif_object_fini(&client->object);
53 nvif_object_dtor(&client->object);
54 if (client->driver) {
55 if (client->driver->fini)
56 client->driver->fini(client->object.priv);
57 client->driver = NULL;
58 }
59}
60
61int
62nvif_client_ctor(struct nvif_client *parent, const char *name, u64 device,
63 struct nvif_client *client)
64{
65 struct nvif_client_v0 args = { .device = device };
66 struct {
67 struct nvif_ioctl_v0 ioctl;
68 struct nvif_ioctl_nop_v0 nop;
69 } nop = {};
70 int ret;
71
72 strncpy(args.name, name, sizeof(args.name));
54 if (client->driver) {
55 if (client->driver->fini)
56 client->driver->fini(client->object.priv);
57 client->driver = NULL;
58 }
59}
60
61int
62nvif_client_ctor(struct nvif_client *parent, const char *name, u64 device,
63 struct nvif_client *client)
64{
65 struct nvif_client_v0 args = { .device = device };
66 struct {
67 struct nvif_ioctl_v0 ioctl;
68 struct nvif_ioctl_nop_v0 nop;
69 } nop = {};
70 int ret;
71
72 strncpy(args.name, name, sizeof(args.name));
73 ret = nvif_object_init(parent != client ? &parent->object : NULL,
74 0, NVIF_CLASS_CLIENT, &args, sizeof(args),
73 ret = nvif_object_ctor(parent != client ? &parent->object : NULL,
74 name ? name : "nvifClient", 0,
75 NVIF_CLASS_CLIENT, &args, sizeof(args),
75 &client->object);
76 if (ret)
77 return ret;
78
79 client->object.client = client;
80 client->object.handle = ~0;
81 client->route = NVIF_IOCTL_V0_ROUTE_NVIF;
82 client->super = true;
83 client->driver = parent->driver;
84
85 if (ret == 0) {
86 ret = nvif_client_ioctl(client, &nop, sizeof(nop));
87 client->version = nop.nop.version;
88 }
89
90 if (ret)
91 nvif_client_dtor(client);
92 return ret;
93}
76 &client->object);
77 if (ret)
78 return ret;
79
80 client->object.client = client;
81 client->object.handle = ~0;
82 client->route = NVIF_IOCTL_V0_ROUTE_NVIF;
83 client->super = true;
84 client->driver = parent->driver;
85
86 if (ret == 0) {
87 ret = nvif_client_ioctl(client, &nop, sizeof(nop));
88 client->version = nop.nop.version;
89 }
90
91 if (ret)
92 nvif_client_dtor(client);
93 return ret;
94}