Function report |
Source Code:kernel\power\user.c |
Create Date:2022-07-28 10:03:55 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:snapshot_ioctl
Proto:static long snapshot_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
Type:long
Parameter:
Type | Parameter | Name |
---|---|---|
struct file * | filp | |
unsigned int | cmd | |
unsigned long | arg |
204 | error = 0 |
209 | If _IOC_TYPE(cmd) != SNAPSHOT_IOC_MAGIC Then Return -ENOTTY |
211 | If _IOC_NR(cmd) > SNAPSHOT_IOC_MAXNR Then Return -ENOTTY |
213 | If Not Check operation authority Then Return -EPERM |
216 | If Not mutex_trylock - try to acquire the mutex, without waiting*@lock: the mutex to be acquired* Try to acquire the mutex atomically Then Return -EBUSY |
219 | lock_device_hotplug() |
224 | Case cmd == SNAPSHOT_FREEZE |
225 | If frozen Then Break |
228 | ksys_sync_helper() |
231 | If error Then Break |
235 | If error Then thaw_processes() |
237 | Else frozen = true |
240 | Break |
242 | Case cmd == SNAPSHOT_UNFREEZE |
245 | pm_restore_gfp_mask() |
247 | free_bitmaps = false |
248 | thaw_processes() |
249 | frozen = false |
250 | Break |
252 | Case cmd == SNAPSHOT_CREATE_IMAGE |
257 | pm_restore_gfp_mask() |
259 | If Not error Then |
260 | error = Write a simple value into user space(in_suspend, (int__user * )arg) |
261 | ready = Not freezer_test_done && Not error |
262 | freezer_test_done = false |
264 | Break |
266 | Case cmd == SNAPSHOT_ATOMIC_RESTORE |
268 | If mode != O_WRONLY || Not frozen || Not snapshot_image_loaded( & handle) Then |
274 | Break |
276 | Case cmd == SNAPSHOT_FREE |
278 | memset( & handle, 0, sizeof(structsnapshot_handle)) |
279 | ready = false |
288 | thaw_kernel_threads() |
289 | Break |
291 | Case cmd == SNAPSHOT_PREF_IMAGE_SIZE |
293 | Break |
295 | Case cmd == SNAPSHOT_GET_IMAGE_SIZE |
305 | Case cmd == SNAPSHOT_AVAIL_SWAP_SIZE |
306 | size = count_swap_pages(swap, 1) |
309 | Break |
311 | Case cmd == SNAPSHOT_ALLOC_SWAP_PAGE |
312 | If swap < 0 || swap >= MAX_SWAPFILES Then |
316 | offset = alloc_swapdev_block - allocate a swap page and register that it has* been allocated, so that it can be freed in case of an error. |
317 | If offset Then |
320 | Else |
323 | Break |
325 | Case cmd == SNAPSHOT_FREE_SWAP_PAGES |
326 | If swap < 0 || swap >= MAX_SWAPFILES Then |
331 | Break |
333 | Case cmd == SNAPSHOT_S2RAM |
334 | If Not frozen Then |
342 | error = suspend_devices_and_enter - Suspend devices and enter system sleep state.*@state: System sleep state to enter. |
343 | ready = false |
344 | Break |
346 | Case cmd == SNAPSHOT_PLATFORM_SUPPORT |
347 | platform_support = Not Not arg |
348 | Break |
350 | Case cmd == SNAPSHOT_POWER_OFF |
351 | If platform_support Then error = hibernation_platform_enter - Power off the system using the platform driver. |
353 | Break |
355 | Case cmd == SNAPSHOT_SET_SWAP_AREA |
356 | If swsusp_swap_in_use() Then |
358 | Else |
362 | error = copy_from_user( & swap_area, (void__user * )arg, sizeof(structresume_swap_area)) |
364 | If error Then |
373 | swdev = new_decode_dev(dev) |
374 | If swdev Then |
376 | swap = swap_type_of(swdev, offset, NULL) |
379 | Else |
384 | Break |
386 | Default |
391 | unlock_device_hotplug() |
394 | Return error |
Name | Describe |
---|---|
snapshot_compat_ioctl |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |