ps3stor_region: fixed ps3stor_mgr_get_region_acl
[ps3stor-utils.git] / ps3stor_mgr.c
blobd5d4570c59a4c13373cba79b67109bc0501ad5d4
2 /*
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; version 2 of the License.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 #include <string.h>
18 #include <sys/types.h>
19 #include <sys/stat.h>
20 #include <fcntl.h>
21 #include <sys/ioctl.h>
22 #include <unistd.h>
23 #include <asm/ps3stormgr.h>
25 #include "ps3stor_mgr.h"
27 int ps3stor_mgr_open(const char *path)
29 return open(path, O_RDWR);
32 int ps3stor_mgr_close(int fd)
34 return close(fd);
37 int ps3stor_mgr_create_region(int fd, uint64_t dev_id, uint64_t start_sector,
38 uint64_t sector_count, uint64_t laid, uint64_t *region_id)
40 struct ps3stormgr_ioctl_create_region arg;
41 int error;
43 memset(&arg, 0, sizeof(arg));
44 arg.dev_id = dev_id;
45 arg.start_sector = start_sector;
46 arg.sector_count = sector_count;
47 arg.laid = laid;
49 error = ioctl(fd, PS3STORMGR_IOCTL_CREATE_REGION, &arg);
51 if (!error)
52 *region_id = arg.region_id;
54 return error;
57 int ps3stor_mgr_delete_region(int fd, uint64_t dev_id, uint64_t region_id)
59 struct ps3stormgr_ioctl_delete_region arg;
61 memset(&arg, 0, sizeof(arg));
62 arg.dev_id = dev_id;
63 arg.region_id = region_id;
65 return ioctl(fd, PS3STORMGR_IOCTL_DELETE_REGION, &arg);
68 int ps3stor_mgr_set_region_acl(int fd, uint64_t dev_id, uint64_t region_id,
69 uint64_t laid, uint64_t access_rights)
71 struct ps3stormgr_ioctl_set_region_acl arg;
73 memset(&arg, 0, sizeof(arg));
74 arg.dev_id = dev_id;
75 arg.region_id = region_id;
76 arg.laid = laid;
77 arg.access_rights = access_rights;
79 return ioctl(fd, PS3STORMGR_IOCTL_SET_REGION_ACL, &arg);
82 int ps3stor_mgr_get_region_acl(int fd, uint64_t dev_id, uint64_t region_id,
83 uint64_t entry_index, uint64_t *laid, uint64_t *access_rights)
85 struct ps3stormgr_ioctl_get_region_acl arg;
86 int error;
88 memset(&arg, 0, sizeof(arg));
89 arg.dev_id = dev_id;
90 arg.region_id = region_id;
91 arg.entry_index = entry_index;
93 error = ioctl(fd, PS3STORMGR_IOCTL_GET_REGION_ACL, &arg);
95 if (!error) {
96 *laid = arg.laid;
97 *access_rights = arg.access_rights;
100 return error;